我們通常使用limit進行分頁查詢
select * from table_name where val=4 order by id limit 100,10;
當偏移量很大時,會遇到性能問題
select * from table_name where val=4 order by id limit 1000000,10
原因:上述語句查出了1000000條數據,然后丟棄掉999990條,做了很多無用功
解決辦法:使用子查詢
select * from table_name a inner join (select id from table_name where val=4 order by id limit 1000000,10) b on a.id=b.id
以上改寫能夠提高效率的原因是先查出滿足條件的10個id(主鍵),再回表去查這10個id對應的行記錄