У меня есть следующий запрос MySQL.Как оптимизировать MySQL-запрос с SUM (условие)
SELECT user_id
SUM(reached = 'Y') AS reached_count,
SUM(reached = 'N') AS not_reached_count
FROM goals
GROUP BY user_id
В настольных целях у меня около 2 миллионов записей. Выполнение запроса занимает около 45 секунд.
Тяжелая часть, кажется, SUM(reached = 'Y')
, которая занимает довольно много времени. Я сравнил его с COUNT(*)
, который был на самом деле гораздо быстрее, но не было различий между Y и N.
EDIT: reached
имеет тип ENUM('Y','N')
+1 это так очевидно, и я пропустил это ... и если он хочет, чтобы данные поворачивались, он мог сделать это, используя это в качестве вспомогательного запроса. – Stephan
Попробовали, но этот запрос был еще медленнее. Я создал индекс для обоих полей. – Aley