mysql數據庫sql 分頁查詢limit優化

在mysql中limit可以實現快速分頁,但是如果數據到了幾百萬時我們的limit必須優化纔能有效的合理的實現分頁了,可能會卡死你的服務器

如圖,一張有不到一萬條的數據查十條

掃描10行,耗時0.006s秒

但是當我記錄了上次的最大ID

   掃描10行。

耗時0.002s,時間提升,雖然數據量不大,但也能看出來變化

 

  總結

   當一個數據庫表過於龐大,LIMIT offset, length中的offset值過大,則SQL查詢語句會非常緩慢,你需增加order by,並且order by字段需要建立索引。
   如果使用子查詢去優化LIMIT的話,則子查詢必須是連續的,某種意義來講,子查詢不應該有where條件,where會過濾數據,使數據失去連續性。
   如果你查詢的記錄比較大,並且數據傳輸量比較大,比如包含了text類型的field,則可以通過建立子查詢。

   SELECT id,title,content FROM items WHERE id IN (SELECT id FROM items ORDER BY id limit 900000, 10);

   如果limit語句的offset較大,你可以通過傳遞pk鍵值來減小offset = 0,這個主鍵最好是int類型並且auto_increment

   SELECT * FROM users WHERE uid > 456891 ORDER BY uid LIMIT 0, 10;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章