博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL5.6优化了Order by排序limit
阅读量:6449 次
发布时间:2019-06-23

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

表结构(1000万行记录):

mysql> show create table sbtest\G;*************************** 1. row ***************************       Table: sbtestCreate Table: CREATE TABLE `sbtest` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `k` int(10) unsigned NOT NULL DEFAULT '0',  `c` char(120) NOT NULL DEFAULT '',  `pad` char(60) NOT NULL DEFAULT '',  PRIMARY KEY (`id`),  KEY `k` (`k`)) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8

我现在对sbtest表非索引字段进行order by排序,版本是MySQL5.5,耗时时间如下:

结果是3分钟14.78秒。

下面再到MySQL5.6里,同样执行这条SQL,看看耗时时间:

结果是12.53秒。

这个是为啥呢?在MySQL5.5里对非索引字段排序时,会对表的所有记录进行一次排序操作,然后取出LIMIT 10条记录,余下的记录抛弃。而在MySQL5.6里,只针对LIMIT 10条记录进行排序,余下的记录并不会进行排序,这样就加快了速度,提高了性能。

参考手册:

转载地址:http://kxowo.baihongyu.com/

你可能感兴趣的文章
jar包冲突案例分析.md
查看>>
控制圈复杂度的9种重构技术总结
查看>>
当软件项目全部能靠自己搞定了,也能接几万元的软件项目时,未必适合创业...
查看>>
数据分析--数字找朋友
查看>>
推荐好用的开源库或软件
查看>>
18年selenium3+python3+unittest自动化测试教程(下)
查看>>
Redis集群中删除/修改节点(master、slave)(实验)
查看>>
memcache数据库和redis数据库的区别(理论)
查看>>
我的友情链接
查看>>
MyBatis+Spring结合
查看>>
shell实例-判断apache是否正常启动
查看>>
SharedPreferences存储复杂对象解决方案
查看>>
Office 365之SkyDrive Pro
查看>>
脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
查看>>
无缝滚动实现原理分析【公告栏】
查看>>
Java Web 高性能开发
查看>>
redis-cli 命令总结
查看>>
CentOS 4.4双网卡绑定,实现负载均衡
查看>>
GitHub页面使用方法
查看>>
Python爬虫综述(笔记)
查看>>