记一次MySQL数据库order by 主键 查询很慢的解决过程
近日在项目中尝试使用如下语句返回列表
select * from dtu_log as l left join e as e on l.dlog_ele=e.id where 1=1 and e.maint_com=1 order by dlog_id desc limit 0,20
数据总量90w
查询耗时要5.5156秒
多,无法接收
使用EXPLAIN
查询,发现l并没有使用dlog_id
作为索引
最终使用FORCE INDEX (PRIMARY)
强制索引解决该问题
修改后的语句为
select * from dtu_log as l FORCE INDEX (PRIMARY) left join e as e on l.dlog_ele=e.id where 1=1 and e.maint_com=1 order by dlog_id desc limit 0,20
同样的数据,修改后查询耗时0.0016秒
有了很好的改善,特此记录一次
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结