MySQL如何優化分頁查詢

2021-10-05 16:19:41 字數 1066 閱讀 1480

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是乙個...