Mysql中filesort优化
中文手册上翻译的很别扭:
发布日期:2021-06-30 13:45:24
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年05月01日 00时24分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux系统编程之信号(二):一些信号发送函数和不同精度的睡眠
2019-05-01
linux系统编程之信号(三):信号的阻塞与未决
2019-05-01
232. 用栈实现队列
2019-05-01
linux系统编程之信号(四):信号的捕捉与sigaction函数
2019-05-01
linux系统编程之信号(五):实时信号与sigqueue函数
2019-05-01
225. 用队列实现栈
2019-05-01
linux系统编程之信号(六):竞态条件与sigsuspend函数
2019-05-01
124. 二叉树中的最大路径和
2019-05-01
linux系统编程之进程(一):进程基本概述
2019-05-01
linux系统编程之进程(二):fork函数相关总结
2019-05-01
linux系统编程之进程(三):exec系列函数和system函数
2019-05-01
linux系统编程之进程(五):终端、作业控制与守护进程
2019-05-01
为什么需要epoll
2019-05-01
epoll不能监控regular file的原因
2019-05-01
375. 猜数字大小 II
2019-05-01
linux系统编程之文件与I/O(一):文件的打开关闭
2019-05-01
linux系统编程之文件与I/O(三):目录的操作
2019-05-01
mini_httpd、cgi与dup2重定向标准输入输出
2019-05-01