利用子查詢優化
說明:
MySQL 并不是跳過 offset 行,而是取 offset+N 行,然后返回放棄前 offset 行,返回 N 行,那當 offset 特別大的時候,此時使用limit m,n效率就非常的低下。想要提升性能要么控制返回的總頁數,要么對超過特定閾值的頁數進行 SQL 改寫。
正例:
先快速定位需要獲取的 id 段,然后再關聯:
SELECT a.* FROM 表_1 a, (select id from 表_1 where 條件 LIMIT 100000,20 ) b where a.id=b.id
select id from 表_1 where 條件 LIMIT 100000,20可以利用覆蓋索引快速查詢出id,然后在根據id回表查詢20個數據的具體值,這樣就能大量的減少數據庫的IO,從而大幅提升性能。