海量表數據之分頁查詢SQL優化

方案1:首先使用索引完成排序分頁操作,最後根據主鍵關聯回原表查詢所需要的其他列內容。
1.普通分頁查詢:
explain select film_id,description from film order by title limit 50,5;
在這裏插入圖片描述
掃描了全表,使用了filesort排序;速度很慢;
2.改進分頁查詢:
explain 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;
在這裏插入圖片描述

方案2:把limit查詢轉換成某個位置的查詢
需求:假設煤業10條記錄,查詢支付表payment中按照租賃編號rental_id逆序排
序的第42頁記錄。
select payment_id,rental_id from payment order by rental_id desc limit 410,10;
和開發人員協商一下,在翻頁的過程中通過增加一個參數last_page_record,用來記錄上一頁最後的租賃標號rental_id,例如第41頁最後一行的租賃編號rental_id=15640;
select * from payment where rental_id<15640 order by rental_id desc limit 10;

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