常見分頁查詢,越到後面越慢,這是由於offset造成的,offset越大,查詢越慢,因爲所以加載的頁越多,掃描也就越費時。
實驗:
sbtest1表,100w數據量,主鍵id,輔助非唯一索引k_1
select id
from sbtest.sbtest1 where id
>="200000" order by id
limit 100000,10;
select id
from sbtest.sbtest1 where id
>="200000" order by id
limit 700000,10;
兩條語句的執行計劃是一樣的,都是使用主鍵索引,但執行時間越差了0.76秒
但是通過Innodb_buffer_page查看,索引使用的頁情況
Offset 100000時,主鍵加載了3720個頁
Offset700000時,主鍵加載了10971個頁
也就是說,offset越大,索引掃描頁越多,所以導致變慢。