MySQL ORDER BY CASE оптимизация - PullRequest
       45

MySQL ORDER BY CASE оптимизация

0 голосов
/ 22 октября 2018

Я просмотрел интернет, но не смог найти решение для этого конкретного запроса.У меня есть этот запрос:

SELECT *
FROM profile
ORDER BY CASE WHEN country_geoname_id = 2635167 
              THEN 1 ELSE 0 END DESC, 
         score DESC

Я хочу знать, возможно ли оптимизировать этот запрос, избегая сортировки файлов.Я создал индекс для столбцов (country_geoname_id и score), но это не помогло.

ОБЪЯСНИТЬ ВЫБОР:

EXPLAIN SELECT

1 Ответ

0 голосов
/ 22 октября 2018

Вы делаете условие вашего заказа недостижимым, когда помещаете его в функцию.

Что делает оператор SQL саргматичным?

, если вы хотите использовать index, создайте дополнительное логическое поле isMyCountry и создайте для него индекс

Тогда ваш запрос стал:

SELECT *
FROM profile
ORDER BY isMyCountry, 
         score DESC
...