索引优化 :提升排序、GROUP BY与分页性能
1.排序优化
1.1排序优化
问题: 在WHERE
条件字段上加索引但是为什么在ORDER BY
字段上还要加索引呢?
回答:
在MySQL中,支持两种排序方式,分别是FileSort和Index排序。
- Index排序中,索引可以保证数据的有序性,不需要再进行排序,效率更高。
- FileSort排序则一般在内存中进行排序,占用CPU较多。如果待排结果较大,会产生临时文件I/O到磁盘进行排序的情况,效率较低。
优化建议:
- SQL中,可以在
WHERE
子句和ORDER BY
子句中使用索引,目的是在WHERE子句中避免全表扫描,在ORDER BY子句避免使用FileSort排序。当然,某些情况下全表扫描,或者FileSort排序不一定比索引慢。但总的来说,我们还是要避免,以提高查询效率。 - 尽量使用Index完成
ORDER BY
排序。如果WHERE和ORDER BY
后面是相同的列就使用单索引列;如果不同 就使用联合索引。 - 无法使用Index时,需要对FileSort方式进行调优。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-02-14 MySQL 图形化工具汇总
2022-02-14 创建对象的 6 种方式