Я бы сказал, что по крайней мере вы должны объединять запросы в цикле по одному на каждый день. Таким образом, для 5-дневного диапазона у вас будет 5 запросов.
Или вы можете иметь один запрос для всего диапазона дат и переместить его за пределы цикла (как описано в ajreal). Затем используйте PHP, чтобы разобраться во всем.
Для больших баз данных я бы предпочел немного разделить запросы, чтобы сбалансировать нагрузку и риск тайм-аутов. Также помогает поддерживать код поддерживаемым.
Вы также должны посмотреть, как ваша база данных структурирована и проиндексирована.
Заметно ли это медленно?
и необходима ли функция array_push? (не то, что это сэкономит много, просто интересно, потому что это выглядит излишним)
Если это действительно медленно, то, возможно, подумайте о полной реструктуризации процесса в зависимости от того, как вы его используете.
Вы можете, например, в 00:01 каждый день делать что-то вроде этого:
- запросить журнал дней и подсчитать уникальную / общую сумму IP / ID
- вставить только числа и дату в отдельную таблицу
- архивировать дни, войти в отдельную архивную таблицу или даже в отдельную базу данных, например mongoDB
Таким образом, вы можете выполнять простые запросы для просмотра данных и манипулирования числами в соответствии с вашими предпочтениями. При архивировании вы сохраняете небольшую таблицу запросов, удаляя ненужные строки, но ведя журнал при необходимости позже.
Конечно, это может не совпадать с настройкой вашей базы данных.