mysql - 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
) 创建了一个索引,但它没有帮助。
解释选择:
解决方案
当你把你的订单条件放在一个函数中时,它就变得不可预测了。
如果你想使用索引创建一个额外的布尔字段isMyCountry
并为它创建一个索引
然后你的查询变成了:
SELECT *
FROM profile
ORDER BY isMyCountry,
score DESC
推荐阅读
- wcf - 间歇性错误无法为 ssl/tls 建立安全通道
- azure-devops - 添加环境到管道卡在“连接到服务器”
- mysql - 如何在 django 中动态使用不同的现有数据库
- c# - 如何在 C# 中对泛型变量使用 Json 反序列化
- svelte - Svelte 自定义元素不转发事件
- typescript - Axios 拦截器 - 如何从 vuex 商店返回响应
- el - Oozie - EL_ERROR:无法将 String 转换为 Double 类型
- node.js - 如何在 node.js 中使用“node-file-logger”包禁用 eslint 的日志记录规则?
- amazon-web-services - 当我已建立 Web 套接字连接并且服务器已满或忙时,负载平衡器如何工作?
- reactjs - 通过变量动态导入文件 - 反应原生