mysql分页大数据性能优化

   使用 mysql 进行分页很常见,平时一般采用的方法也就是 limit,以此来达到查询到我们所需的数据,当起始页较小时,查询没有性能问题, 就像下面这条语句
   select * from product limit 10000, 20    0.8秒
   那么我们把起始记录改为40w看下,
   select * from product limit 400000, 20   3.5秒
   我们可以看出在大数据量分页时,性能已经有所下降,所以此处对 limit 分页进行优化,我们可以先单独查出所需数据的主键,然后再根据主键查询所需的数据,因为主键上有索引,按索引查询的话必然会提高很多。
   这里提供有两种方法,一种是 id>=的形式,另一种就是利用 join:
   第一种方法
   SELECT * FROM rules WHERE ID > =(select id from rules limit 400000, 1) limit 10
   第二种方法
   SELECT * FROM rules r JOIN (select id from rules limit 400000, 10) b ON r.ID = b.id
   这两个方法效率都差不多,查询时间提高很多

你可能感兴趣的:(数据库)