Задать вопрос
@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')
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
  • Академия Эдюсон
    FullStack-разработчик: тариф PRO
    14 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы