假设我有一个 mysql
数据表 tab
,总数据量为3400万,id
为主键,偏移量
达到2000万,执行以下两条语句:
语句A(耗时129.570s)
select * from tab where id < 20000010 LIMIT 20000000, 10;
语句B(耗时5.114s)
SELECT a.* FROM tab a, (select id from tab LIMIT 20000000, 10) b where a.id = b.id;
想请教一下为什么这两条语句的差异这么大,其中的原理是什么呢?十分感谢~~
mysql的主键用的是聚簇索引,所以只查一个主键的时候是扫索引,查全部的时候是扫表。
你的表越大,2者的差距就越大。