MySQL如何優化分頁查詢

打卡(2020-05-02)

MySQL如何優化分頁查詢

一般分頁查詢是創建覆蓋索引能夠比較好的提升性能。

  1. 第一種優化思路

在索引上完成分頁操作,最後根據主鍵關聯回原表查詢所需要的其他列內容

    // 未優化之前的sql,這個相當於是全表掃描
    select film_id,description from film order by title limit 50,5;
    
    // 優化之後的sql,這個就是使用主鍵索引了
    select  a.film_id,a.description from film a inner join (select film_id from film order by title limit 50,5) b on a.film_id = b.film_id;
    
    // 通過主鍵關聯查詢可以使用expain查看優化結果type已經不是使用all而是eq_ref/index

總結:這種方式就是讓MySQL掃描儘可能少的頁面來提高分頁的效率!

  1. 第二種優化思路

就是將limit查詢換成某一個位置查詢

    // 優化前的sql
    select * from payment order by rental_id desc limit 410,10;
    
    // 優化後的sql
    // 說明:這種優化方式就是增加一個參數 last_page_record,用來記錄上一次最後一行的rental_id
    
    select * from payment where rental_id>15640 order by rental_id desc limit 10;

總結:這樣把limit m,n轉換成limit n的查詢,只適合排序字段不會出現重複值得特定環境,這樣的操作可以減少翻頁的壓力,如果排序出現大量的重複值,使用這個優化方式,那麼會出現分頁結果錯亂,而不適合使用第二種的優化思路!

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