当前位置: 首页 > news >正文

MySQL优化order by导致的 using filesort

using filesort 一般出现在 使用了 order by 语句当中。

using filesort不一定引起mysql的性能问题。但是如果查询次数非常多,那么每次在mysql中进行排序,还是会有影响的。

这里的优化方式是在order by 的字段建立索引,例如 语句:

SELECT * FROM yw_syjgb  ORDER BY result_date desc LIMIT 0,1000;

 查看执行计划:

+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+
| 1 | SIMPLE | yw_syjgb | ALL | NULL | NULL | NULL | NULL | 1312418 | Using filesort |
+----+-------------+----------+------+---------------+------+---------+------+---------+----------------+


则需要在result_date  建立索引:

此时查看执行计划:

+----+-------------+----------+-------+---------------+-------------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+-------+---------------+-------------+---------+------+------+-------+
| 1 | SIMPLE | yw_syjgb | index | NULL | result_date | 6 | NULL | 1000 | NULL |
+----+-------------+----------+-------+---------------+-------------+---------+------+------+-------+

可以看到执行计划中使用索引后没有 Using filesort

需要注意的是:由于 Using filesort是使用算法在 内存中进行排序,MySQL对于排序的记录的大小也是有做限制:max_length_for_sort_data,默认为1024
show variables like '%max_length_for_sort_data%';

+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| max_length_for_sort_data | 1024 |
+--------------------------+-------+
经过笔者测试,如果排序查询的数据两大于这个默认值的话,还是会使用Using filesort。

总结一句,当排序查询的数据量在默认值的范围内是,在排序的字段上加上索引可以提升MySQL查询的速度。

 

转载于:https://www.cnblogs.com/drcoding/p/4942277.html

相关文章:

  • 管理日志-原创理论工具--技能方格图
  • objective-c系列-NSMutableString
  • MySQL 数据库开发规范
  • 20 种提升网页速度的技巧
  • xdebug代码调试工具
  • AngularJS Toaster
  • 静态网站生成器将会成为下一个大热门
  • 二维数组举例
  • 7月上旬全球域名新增13.5万个 环比减少近29%
  • sftp详细参数说明
  • Shane版详细设计书 文档模板
  • 简比:三大电商巨头的平台、支付、物流
  • VC++ 如何让ScrollView视图显示滚动条
  • android自定义View的用法
  • Unsupported major.minor version 51.0(jdk版本错误)
  • ES6指北【2】—— 箭头函数
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • @jsonView过滤属性
  • 2017年终总结、随想
  • android 一些 utils
  • create-react-app做的留言板
  • JAVA SE 6 GC调优笔记
  • Javascript基础之Array数组API
  • Java读取Properties文件的六种方法
  • Java方法详解
  • Kibana配置logstash,报表一体化
  • MySQL QA
  • PHP那些事儿
  • React中的“虫洞”——Context
  • TCP拥塞控制
  • ViewService——一种保证客户端与服务端同步的方法
  • 飞驰在Mesos的涡轮引擎上
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 我感觉这是史上最牛的防sql注入方法类
  • 一、python与pycharm的安装
  • 【干货分享】dos命令大全
  • 我们雇佣了一只大猴子...
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (floyd+补集) poj 3275
  • (论文阅读30/100)Convolutional Pose Machines
  • (五)关系数据库标准语言SQL
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)甲方乙方——赵民谈找工作
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET/C# 的字符串暂存池
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /3GB和/USERVA开关
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20181219]script使用小技巧.txt