本人微信公众号"aeolian"~

sql分页优化

索引优化

注意查询的数据占总数据达到一定量的时候可能导致索引失效。可以用limit或者指定列缩小数据区域可以解决。

以时间orderby排序的limit分页优化

前提用order by分页

limit分页在两三万左右时可以使用,超过十万条记录时要先查询出前n-1页的时间最大值max(date),以这个为开始时间。这里变动的参数只有下面的300000,这里为查询第30001页的数据。

300000为pagerow*(page-1)得来。

select * FROM
    tbl where sysDate >(select max(sysDate) from (select sysDate from tbl where sysDate>='2018-03-01 00:00:00' order by sysdate asc limit 0,300000) aa)
    AND sysDate <=  '2019-08-27 23:59:59' order by sysDate limit 0,10 

获取分页总数

一般的分页列表会要求返回记录总条数,这时候不是获取列表数据,不必要关联所有的表。当count百万级的数据时一点关联表就会很慢。解决方法是根据参数动态left join表。

 

点赞

Leave a Reply

Your email address will not be published. Required fields are marked *