首頁常見問題正文

怎樣對MySQL的limit分頁查詢進行優(yōu)化?

更新時間:2023-05-08 來源:黑馬程序員 瀏覽量:

在數(shù)據(jù)量比較大時,如果進行l(wèi)imit分頁查詢,在查詢時,越往后,分頁查詢效率越低。執(zhí)行l(wèi)imit分頁查詢耗時對比如下:
1683530047535_101.png

因為,當在進行分頁查詢時,如果執(zhí)行l(wèi)imit 9000000,10,此時需要MySQL排序前9000010記錄,僅僅返回9000000 - 9000010的記錄,其他記錄丟棄,查詢排序的代價非常大 。

優(yōu)化思路:一般分頁查詢時,通過創(chuàng)建覆蓋索引能夠比較好地提高性能,可以通過覆蓋索引加子查詢形式進行優(yōu)化

select*
from tb_sku t.
   (select id from tb_sku order by id limit 9000000,10) a
where thg = a.id;

先分頁查詢數(shù)據(jù)的同字段,確定了id之后,再用子查詢來過濾,只查詢這個試列表中的數(shù)據(jù),因為查詢id的時候,走的覆蓋索引,所以效率可以提升很多。


分享到:
在線咨詢 我要報名
和我們在線交談!