На самом деле оба подхода хороши, и оба могут извлечь выгоду из индекса в столбце time_stamp
в вашей базе данных, если он у вас есть. Я попытаюсь дать им советы:
select avg(value) from data where time_stamp between date_from and date_to
-подобных запросов в 20 разных чтобы ускорить общую работу. Вы избавитесь от необходимости передавать много данных клиенту из базы данных. Недостатком было бы то, что вам нужно включить дополнительное условие where
, чтобы исключить строки с ненужными значениями external_id
. Это усложняет запрос и может немного замедлить обработку, если есть много этих значений. time_stamp
перед отправкой, а затем просто проверить, соответствует ли ваш текущий элемент из нового диапазона данных (из-за сортировки вы будете уверены, что более поздние элементы будут с более поздних дат). Это уменьшит внутренний цикл до оператора if
. Я не уверен, что это узкое место здесь. Возможно, вы хотели бы посмотреть на потоки результатов, а не ждать, пока их все выберет.