Mysql中filesort优化
发布日期:2021-06-30 13:45:24 浏览次数:2 分类:技术文章

本文共 637 字,大约阅读时间需要 2 分钟。

用Explain分析SQL语句的时候,经常发现有的语句在Extra列会出现Using filesort,根据mysql官方文档对他的描述:

引用
MySQL must do an extra pass to find out how to retrieve the rows in sorted order. The sort is done by going through all rows according to the join type and storing the sort key and pointer to the row for all rows that match the WHERE clause.

中文手册上翻译的很别扭:

引用
“Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键字被排序,并按排序顺序检索行。”

Using filesort 是Mysql里一种速度比较慢的外部排序,尽量避免!

当where条件和order by同时出现时,如果where中字段A使用了索引,而order by的字段是B,查看执行计划时,就会出现filesort文件排序。

解决这个问题就是建立一个包含 WHERE 和 ORDER BY 条件的混合索引。

比如:

建立一个sid和type的联合索引

再次查看执行计划:

filesort已经消失了!

转载地址:https://jeffsheng.blog.csdn.net/article/details/80804218 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:网络编程之每天学习一点点[day10]-----netty之tcp拆包粘包解决方案二“固定字符串长度”
下一篇:网络编程之每天学习一点点[day9]-----netty与tomcat的耦合和解耦

发表评论

最新留言

很好
[***.229.124.182]2024年05月01日 10时41分28秒