mysql limit性能問題


我們通常使用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對應的行記錄


免責聲明!

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



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