mysql如何優化分頁查詢
一般分頁查詢是建立覆蓋索引能夠比較好的提公升效能。第一種優化思路
在索引上完成分頁操作,最後根據主鍵關聯回原表查詢所需要的其他列內容
// 未優化之前的sql,這個相當於是全表掃瞄
select film_id,description from film order
by title limit50,
5;// 優化之後的sql,這個就是使用主鍵索引了
select a.film_id,a.description from film a inner
join
(select film_id from film order
by title limit50,
5) b on a.film_id = b.film_id;
// 通過主鍵關聯查詢可以使用expain檢視優化結果type已經不是使用all而是eq_ref/index
總結:這種方式就是讓mysql掃瞄盡可能少的頁面
來提高分頁的效率!
第二種優化思路
就是將limit查詢換成某乙個位置查詢
// 優化前的sql
select
*from payment order
by rental_id desc
limit
410,10;
// 優化後的sql
select
*from payment where rental_id>
15640
order
by rental_id desc
limit
10;
總結:這樣把limit m,n轉換成limit n的查詢,只適合排序字段不會出現重複值得特定環境
,這樣的操作可以減少翻頁的壓力,如果排序出現大量的重複值,使用這個優化方式,那麼會出現分頁結果錯亂,而不適合使用第二種的優化思路! mysql優化 優化分頁查詢
create table goods id bigint 20 unsigned not null auto increment,name varchar 10 default null,price double default null,create time datetime default n...
優化分頁查詢
我們一般使用分頁都是使用limit來完成的,如果資料量小的話還可以,但是當資料量非常大的時候,不建立索引,通過全表查詢,將會非常耗時,效能將受到很大的影響。第一種優化方式 在索引上完成排序分頁的操作,最後根據主鍵關聯回原表查詢所需要的其他列內容 例 我想對我之前的分頁進行優化,沒有優化前的sql語句...
MySQL 利用延遲關聯優化分頁查詢
通常會有一些起點巨大的分頁查詢,效率低下,例如 select from tab where create date 2018 12 20 13 20 10 and create date 2019 05 01 14 00 00 order by id limit 328000,10 假設tab是乙個...