MySQL ORDER BY CASE 优化

MySQL ORDER BY CASE optimization

我查看了互联网,但找不到针对此特定查询的解决方案。我有这个查询:

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

我想知道是否可以通过避免文件排序来优化此查询。我为列(country_geoname_idscore)创建了一个索引,但没有帮助。

解释 SELECT:

将订单条件放在函数中时,您使订单条件不可搜索。

What makes a SQL statement sargable?

如果你想使用索引创建一个额外的布尔字段isMyCountry并为它创建一个索引

那么你的查询就变成了:

SELECT *
FROM profile
ORDER BY isMyCountry, 
         score DESC