using filesort

用Explain分析SQL语句的时候,经常发现有的语句在Extra列会出现Using filesort,mysql官方文档对他的描述也很奇怪,不好理解

概念:mysql会对数据使用一种外部索引排序,而不是基于表内部索引顺序来进行读取,mysql无法利用内部索引来完成的排序被我们称为文件排序

注意:Using filesort 是Mysql里一种速度比较慢的外部排序,如果能避免是最好的了,很多时候,我们可以通过优化索引来尽量避免出现Using filesort,从而提高速度。


产生原因
前提:涉及到order by语句且索引使用不当

情况一:原生的数据表,没有新建任何索引,除非是用主键作为排序字段,否则无论你怎么排序都会出现using filesort

情况二:在建立索引的情况下(只考虑符合索引,开发中很少见单值索引),标准情况如下

①最容易出错的情况就是不符合最佳左前缀匹配,如图

多列索引,形如 key ('A1','A2','A3' ,'A4')等的,排序的思路一般是,先按照A1来排序,A1相同,然后按照A2排序,
以此类推,这样对于(A1),(A1,A2),(A1,A2,A3)的索引都是有效的,但是对于(A2,A3)这样的索引就无效了

②符合最佳左前缀匹但是筛选字段不匹配索引字段,如图

using temporary

定义:mysql对数据进行排序时使用了临时表作为辅助工具,用于保存临时结果,来完成排序过程。
情景:涉及到group by且索引使用不当
后果:严重拖慢mysql的查询速度,意味着需要进行sql优化

解决方案:和using filesort情况基本一致,主要都是因为不符合最佳左前缀匹配法,通过创建或修改索引来优化,达到using index级别即可

using filesort和using temporary相关推荐

  1. Using temporary与Using filesort

    通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort,其中此次重点关 ...

  2. mysql group by using filesort优化

    原join 连接语句 SELECT SUM(video_flowers.number) AS num, video_flowers.flower_id, flowers.title, flowers. ...

  3. mysql版本不一致会导致uuid_MySQL性能优化和高可用架构建议

    1.主从复制binlog_format要使用row,statement会导致主从数据不一致(基于语句,rand或uuid等函数没法恢复) 2.如果使用binlog恢复数据,标准做法是用mysqlbin ...

  4. MYSQL explain详解[转载]

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 虽然这篇文章我写的很长,但看起来真的不会困啊,真的都是干货啊!!!! 先解析 ...

  5. 掌握 MySQL 这 19 个骚操作,效率至少提高3倍

    本文我们来谈谈项目中常用的MySQL优化方法,共19条,利用好这19条方法,会让你的效率提升至少3倍. 1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单 ...

  6. Mysql高级调优篇——第二章:Explain执行计划深度剖析

    1.Mysql Query Optimizer 这个名称在前言部分我在Mysql的整体架构中介绍过,称为查询优化器:这个查询优化器在绝大多数的公司,是不会做任何修改和扩展的,因为业务不需要,大牛请不起 ...

  7. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化

    本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...

  8. 19 条 MySQL 技巧,效率至少提高 3倍!

    作者:喜欢拿铁的人 来源:https://zhuanlan.zhihu.com/p/49888088 本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 1.EXPLAIN 做MySQ ...

  9. 记一次mysql性能优化过程

    2019独角兽企业重金招聘Python工程师标准>>> 转发自:记一次mysql性能优化过程 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在 ...

最新文章

  1. 63万张!旷视发布最大物体检测数据集Objects365 | 技术头条
  2. Apache ZooKeeper - 使用Apache Curator操作ZK
  3. python抽奖概率设计_辞职转行不如学Python,那些下载安装的坑,你真的都避开了嘛?...
  4. VTK:几何对象之ParametricSuperEllipsoid
  5. delete if only one note header
  6. java rsa内容超长_RSA 非对称加密解密,超长字符串分块处理
  7. Fedora 20 配置
  8. 百度推送老是不成功,没有提醒查找原因
  9. 什么是响应式布局设计
  10. 等额本息excel模板下载_格格技能——巧用EXCEL函数,算清各种收益利率
  11. 小猿圈分享-数据分析工具
  12. android 选座系统,android 影院选座
  13. 品优购psd文档分享
  14. 音乐节拍自动标记插件 BeatEdit 2 for Pr
  15. 河南理工计算机面试题,河南理工大学自主招生综合素质测试面试题方法指导总结...
  16. 计算机与机械专业 有什么大学排名,2017机械排名211大学排名
  17. Redis基础使用(四)——缓存优化
  18. 地大校园邮箱申请流程中国地质大学(武汉)
  19. Venus Cheng打造完美维纳斯 荣获五星企业家认证
  20. 《剑指offer》内容总结

热门文章

  1. 高质量程序设计指南c++/c语言(25)--类与内联函数
  2. WCF学习笔记(2)——独立WCF服务
  3. 用户和组 win2003
  4. ArcGIS API for Silverlight 学习笔记(1)
  5. Windows 应用
  6. [jQuery基础] jQuery动效案例(一) -- 弹窗广告、对联广告
  7. LeetCode--265. 粉刷房子Ⅱ(动态规划)
  8. MyBatis复习(七):MyBatis批量处理
  9. aspcms模板转php,aspcms转换zzzcms,aspcms迁移数据,aspcms替换模板,aspcms模板转换-下载-zzzcms官网-开源免费建站系统...
  10. 数据库连接串你知道多少