MySQL資料庫優化Limit分頁

MySQL優化Limit分頁

 

   很多時候、我們需要選擇出從指定位置開始的指定行數、此時、limit笑瞭

     對於limit的設定是:

     limit x,y

     表示從第x行開始選擇y條記錄

     

     在業務需要分頁操作的時候、我們通常采用limit+order by這對洗剪吹組合、高端洋氣上檔次

     然而、當翻到非常靠後的頁面時、MySQL需要花費大量的時間來掃描需要丟棄的數據

     

     此時比較好的策略是使用延遲關聯:

     通過使用覆蓋索引查詢返回需要的主鍵、再根據這些主鍵關聯原表獲得需要的行

     具體請看下面的一個例子

     

     假如有這樣一個查詢:

[plain] 
select film_id,actor,description from film where actor='WaterBin' order by title limit 100000,5  

 

 

     我們可以這樣改造:

[plain] 
select film.film_id,film.actor,film.description  
  from film  
inner join (  
select film_id from film where f.actor='WaterBin'  
 order by title limit 100000,5  
           )  
as f using(film_id);  

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *