MySQL ORDER BY CASE оптимизация
Я просмотрел интернет, но не смог найти решение для этого конкретного запроса. У меня есть этот запрос:
SELECT *
FROM profile
ORDER BY CASE WHEN country_geoname_id = 2635167
THEN 1 ELSE 0 END DESC,
score DESC
Я хочу знать, возможно ли оптимизировать этот запрос, избегая сортировки файлов. Я создал индекс для столбцов (country_geoname_id
а также score
), но это не помогло.
ОБЪЯСНИТЬ ВЫБОР:
1 ответ
Решение
Вы делаете условие вашего заказа недостижимым, когда помещаете его в функцию.
Что делает оператор SQL саргным?
если вы хотите использовать индекс, создайте дополнительное логическое поле isMyCountry
и создать индекс для него
Тогда ваш запрос стал:
SELECT *
FROM profile
ORDER BY isMyCountry,
score DESC