關於mysql分頁查詢大數據量offset過大的查詢速度變慢


-- 以該查詢為例
select * from table where field='' limit n,m

假設該查詢走了索引,該查詢會查詢出前n + 1條數據,根據條件去掉前n條,如果n太大,則會有多次回表操作導致查詢效率降低

優化方式

如果單表數據量比較大,可通過減少回表次數提高效率,所以可以對上面的查詢語句做下簡單的修改

select * from table a inner join (select id from table where where field='' limit n,m) b on  a.id=b.id

如果每頁分頁數據量不大,也可以用子查詢,如果m值太大,不建議使用,可能會導致索引失效

select * from table where id in (select id from (select id from table where where field='' limit n,m) b)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM