ITPub博客

首页 > IT职业 > IT图书 > MySQL5.6优化了Order by排序limit

MySQL5.6优化了Order by排序limit

IT图书 作者:websurf 时间:2021-09-09 10:20:49 0 删除 编辑


表结构(1000万行记录):

mysql> show create table sbtestG;

*************************** 1. row ***************************

       Table: sbtest

Create 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,耗时时间如下:

wKiom1L7SfyTw_pZAAQrI3boW90138.jpg

结果是3分钟14.78秒。

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

wKioL1L7SxGxMV2wAAQ7RuHenK0878.jpg

结果是12.53秒。

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

参考手册:

wKioL1L7S-3jlamHAAHlezHN7yc757.jpg

wKiom1L7TBLAoKSVAAEtPsIRR_k521.jpg

wKioL1L7S-2y3iTEAAJSAg1uUBw080.jpg

©著作权归作者所有:来自51CTO博客作者hcymysql的原创作品,如需转载,请注明出处,否则将追究法律责任

排序limitorder byMySQL5.6专栏


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1499/viewspace-2820693/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    95
  • 访问量
    1057