limit运行机制是先检索符合条件的指定数量的数据,再对数据进行截取,但是limit并不能通过索引查询数据,所以数据量很大的时候就会有性能问题,这里介绍的是运用数据表索引对limit查询进行优化。
一下面一张200万数据的表为例:
传统limit
SELECT * FROM tableName ORDER BY id LIMIT 1000000,100;
时间: 5.371s
子查询方式,索引扫描
SELECT * FROM tableName
WHERE id >= (SELECT id FROM tableName ORDER BY id LIMIT 1000000, 1)
LIMIT 100;
时间: 0.274s
可以看到性能提升了20倍