关于order by limit主键优化问题--大神请进

IceArmour IceArmour 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
建了一张表,主键为自增id,name可以为空,插入6条数据

create table t(id int unsigned not null primary key auto_increment,name varchar(20));

insert into t select 0,'1';
insert into t select 0,null;
insert into t select 0,'2';
insert into t select 0,'3';
insert into t select 0,null;
insert into t select 0,'4';

第一行查询全表扫描,这没有问题

加了order by id limit 3之后居然只扫描了3行


我的问题是,扫描的时候limit 3,而这里只有2条null应该也是从6开始扫描到1才停止呀,mysql究竟是怎么对这条SQL进行优化的?求大神解答
...全文

相关推荐

mysql order by limit 的一个坑.docx

mysql order by limit 的一个坑.docx

m0_63511380

MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍

两张表连接查询并limit,SQL效率很高,但是加上order by以后,语句的执行时间变的巨长,效率巨低,接下来为大家介绍下连接查询排序limit

weixin_38611796

MYSQL随机抽取查询 MySQL Order By Rand()效率问题

要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。 但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。 代

weixin_38621272

MySQL百万级数据量分页查询方法及其优化建议

主要介绍了MySQL百万级数据量分页查询方法及其优化建议,帮助大家更好的处理MySQL数据库,感兴趣的朋友可以了解下

weixin_38697274

MySQL用limit方式实现分页的实例方法

在本篇文章中小编给大家整理了一篇关于MySQL用limit方式实现分页的实例方法,有需要的朋友们可以参考学习下。

weixin_38607908
评论 19
收藏 已收藏
分享
返回顶部
IceArmour
MySQL 57,062 成员 56,759 内容