@Kirill-Gorelov
С ума с IT

Можно ли улучшить sql запрос?

Ребят, делаю статистику для агрегатора.
И нужно выводить информацию по разным сайтам, то есть запрос один и тот же, только меняется адрес сайта.
SELECT DATE_FORMAT(`time_hour`,'%H') as hour, `site`, COUNT(`id`) as count, sum(`price_1`) as sum FROM `project` WHERE `site`= 'SITE1' AND `date` = '$date' GROUP BY DATE_FORMAT(`time_hour`,'%H')

И точно такой же запрос только уже не WHERE `site`= 'SITE1`, а WHERE `site`= 'SITE2`
SELECT DATE_FORMAT(`time_hour`,'%H') as hour, `site`, COUNT(`id`) as count, sum(`price_1`) as sum FROM `project` WHERE `site`= 'SITE2' AND `date` = '$date' GROUP BY DATE_FORMAT(`time_hour`,'%H')
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если MySQL версии 5.7.6 и выше, то вместо DATE_FORMAT сделать вычислимое поле `hour`, по нему создать индекс.
Если версия ниже, то заменить на HOUR(`time_hour`) или добавить обычное поле `hour` и триггер BEFFORE INSERT/BEFORE UPDATE на его заполнение.
Группировать сразу по `hour` и `site`, если нужна общая статистика.
Заменить COUNT(`id`) на COUNT(*), тогда не будет дополнительной проверки `id` на NULL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы