mysql 5.7 innodb
有个user表38w数据
三个语句执行计划分别是
explain SELECT * from user_basic_0000 WHERE id > 257300 and id <= 257800 ;
explain SELECT * from user_basic_0000 WHERE id > 257300 order by id asc limit 500;
explain SELECT * from user_basic_0000 WHERE id > 257300 limit 500;
为什么第一个预估的扫描行数这么少?
按我理解都是二分找到小于257300这个id的最近索引然后再往后遍历。
求高手解答
//浅浅尝试一下,若存在不足请指正
//字段优化 ,需要啥字段就查询哪些字段
// 小表驱动大表
SELECT * from user_basic_0000 WHERE id > 257300 and id <= 257800 ;
优化为
select from (SELECT from user_basic_0000 WHERE id > 257300) tb where tb.id<= 257800;