MySQL优化LIMIT分页

我们使用limit的时候很简单

select * from table limit 1, 10;

select column1, column2, column3 from table limit 1, 10;

没什么问题

但是有时候我么表里面有很多数据怎么办?

select column1 from table limit 500000, 100;

怎么办?

这个时候,如果column是我们常用的一个索引还好,但是如果我们这样呢?

select column1, column2 from table limit 500000, 100;

column2不是索引,势必会使得查询异常慢,那我们怎么解决这种情况呢

这时候我们需要尽可能的使用索引覆盖扫描,而不是查询所有的列,然后根据需要做一次关联操作在返回所有的列。

SELECT 
  column1, column2, column3
FROM
  table 
INNER JOIN 
    (SELECT 
      column1 
    FROM
      table 
    LIMIT 500000, 50) AS ood USING (column1);

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