mysql limit分頁查詢效率


對於有大數據量的mysql表來說,使用LIMIT分頁存在很嚴重的性能問題。

查詢從第1000000之后的30條記錄:

SQL代碼1:平均用時6.6秒 SELECT * FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 30

SQL代碼2:平均用時0.6秒 SELECT * FROM `cdb_posts` WHERE pid >= (SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1) LIMIT 30

因為要取出所有字段內容,第一種需要跨越大量數據塊並取出,而第二種基本通過直接根據索引字段定位后,才取出相應內容,效率自然大大提升。

可以看出,越往后分頁,LIMIT語句的偏移量就會越大,兩者速度差距也會越明顯。

實際應用中,可以利用類似策略模式的方式去處理分頁,比如判斷如果是一百頁以內,就使用最基本的分頁方式,大於一百頁,則使用子查詢的分頁方式。


免責聲明!

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



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