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_id
和 score
)创建了一个索引,但没有帮助。
解释 SELECT:
将订单条件放在函数中时,您使订单条件不可搜索。
What makes a SQL statement sargable?
如果你想使用索引创建一个额外的布尔字段isMyCountry
并为它创建一个索引
那么你的查询就变成了:
SELECT *
FROM profile
ORDER BY isMyCountry,
score DESC
我查看了互联网,但找不到针对此特定查询的解决方案。我有这个查询:
SELECT *
FROM profile
ORDER BY CASE WHEN country_geoname_id = 2635167
THEN 1 ELSE 0 END DESC,
score DESC
我想知道是否可以通过避免文件排序来优化此查询。我为列(country_geoname_id
和 score
)创建了一个索引,但没有帮助。
解释 SELECT:
将订单条件放在函数中时,您使订单条件不可搜索。
What makes a SQL statement sargable?
如果你想使用索引创建一个额外的布尔字段isMyCountry
并为它创建一个索引
那么你的查询就变成了:
SELECT *
FROM profile
ORDER BY isMyCountry,
score DESC