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
Другие вопросы по тегам