云数据库场景问题经典案例——分页优化

普通写法:mysql

select * from t where sellerid=100 limit 10000020

普通limit M,N的翻页写法,每每在越日后翻页的过程当中速度越慢,缘由mysql会读取表中的前M+N条数据, M越大,性能就越差:sql

优化写法:性能

select t1.* from t t1, (select id from t sellerid=100 limit 10000020) t2 where t1.id=t2.id;

 优化后的翻页写法,先查询翻页中须要的N条数据的主键id,在根据主键id回表查询所须要的N条数据,此过 程中查询N条数据的主键ID在索引中完成优化

注意:须要在t表的sellerid字段上建立索引 create index ind_sellerid on t(sellerid);spa

案例以下:code

原始语句:blog

select id, ... from buyer where sellerId = 765922982 and gmt_modified >= '1970-01-01 08:00:00' and gmt_modified <= '2013-06-05 17:11:31' limit 255000, 5000

优化后语句:索引

select t2.* from (select id from buyer where sellerId = 765922982 and gmt_modified >= '1970-01-01 08:00:00' and gmt_modified <= '2013-06-05 17:11:31' limit 255000, 5000)t1, buyer t2 where t1.id=t2.id ;
相关文章
相关标签/搜索