更新時(shí)間:2023-05-08 來源:黑馬程序員 瀏覽量:
在數(shù)據(jù)量比較大時(shí),如果進(jìn)行l(wèi)imit分頁查詢,在查詢時(shí),越往后,分頁查詢效率越低。執(zhí)行l(wèi)imit分頁查詢耗時(shí)對比如下:
因?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í)候,走的覆蓋索引,所以效率可以提升很多。