Это скорее вопрос алгоритма, чем вопрос графика. Но да, вам нужно запросить данные в конце дня.
Однако есть более разумные способы, чем другие.
Вместо того, чтобы строить цикл, который запрашивает всех боссов вашего начального сотрудника, и внутри него есть другой цикл, чтобы получить босса более высокого уровня и так далее ... Вы могли бы сделать это по-другому.
Сначала убедитесь, что вы используете пакетных запросов , чтобы свести к минимуму количество обращений.
Во-вторых, я думаю, можно с уверенностью предположить, что в какой-то момент у некоторых сотрудников будет один и тот же начальник. И вместо того, чтобы многократно запрашивать, кто является боссом этого босса, вам нужно убедиться, что вы делаете это только один раз.
Есть несколько способов сделать это, поддерживая дерево, индекс, всегда применяя различные наборы данных ...
Наконец, имейте в виду, что алгоритмическая сложность цикла в цикле равна o (n) ^ 2. Что всегда хуже, чем наличие двух последовательных циклов (один за другим). Так что попытка сгладить ваш алгоритм поможет, а также поможет вам создавать пакеты.
Что касается дросселирования, убедитесь, что вы идете по руководству . Да, вы можете испытать это, однако есть несколько способов оптимизации.