Mysql中filesort优化
2019-08-27 作者  Winter    PHP/MYSQL    阅读量738    评论量0

用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 条件的混合索引

比如:


blob.png

添加联合索引brandDates后,

再看:

blob.png

filesort已经不见了。


上一篇:php架构师
下一篇:Excel怎样给数据批量添加单引号与逗号

0条评论
热门文章
热评文章
精品课程

¥小额赞助

联系我们

邮箱:chennengit@163.com

手机:13455295173(微信)

QQ:376926761