美文网首页
大表分页查询优化

大表分页查询优化

作者: 阿福德 | 来源:发表于2019-08-05 11:37 被阅读0次

分页查询, 查询条件走索引字段

SELECT * FROM table_name t WHERE t.`cretime` < '2018-02-02'  LIMIT 1000, 10;

上面这个SQL其实查询了1000+10条数据,然后丢弃前面的1000条,这样性能。
如下的优化能够对查询进行优化,原因使用覆盖索引查出id,目的是减少了回表次数。

SELECT * FROM table_name  t
WHERE t.id IN (SELECT x.id FROM 
(
 SELECT o.id FROM table_name o WHERE o.`cretime` < '2018-02-02'  LIMIT 1000, 10 ) AS X
 )

如下的查询语句,但是可能会出现错误,取决于你的mysql版本:

SELECT * FROM table_name  t
WHERE t.id IN (
 SELECT o.id FROM table_name  o WHERE o.`cretime` < '2018-02-02'  LIMIT 1000, 10 );

错误如下:

错误代码: 1235
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

相关文章

网友评论

      本文标题:大表分页查询优化

      本文链接:https://www.haomeiwen.com/subject/povpdctx.html