首頁常見問題正文

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

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

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

因?yàn)?,?dāng)在進(jìn)行分頁查詢時(shí),如果執(zhí)行l(wèi)imit 9000000,10,此時(shí)需要MySQL排序前9000010記錄,僅僅返回9000000 - 9000010的記錄,其他記錄丟棄,查詢排序的代價(jià)非常大 。

優(yōu)化思路:一般分頁查詢時(shí),通過創(chuàng)建覆蓋索引能夠比較好地提高性能,可以通過覆蓋索引加子查詢形式進(jìn)行優(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ù),因?yàn)椴樵僫d的時(shí)候,走的覆蓋索引,所以效率可以提升很多。


分享到:
在線咨詢 我要報(bào)名
和我們在線交談!