MySQL 中高 OFFSET 值導致查詢效能下降
查詢執行緩慢通常歸因於過多的 CPU 使用或記憶體消耗。然而,在某些情況下,即使具有高 LIMIT 偏移量的看似無害的查詢也可能導致嚴重的效能瓶頸。
問題:增加 OFFSET 影響查詢速度
考慮一個包含超過 1600 萬筆記錄的大表的場景。像這樣的查詢:
SELECT * FROM large ORDER BY `id` LIMIT 0, 30
的執行速度比:
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
兩個查詢會擷取相同數量的記錄,但後一個查詢中的偏移值10,000 會降低效能。
了解問題
MySQL 在檢索資料時使用索引掃描或全表掃描。當套用偏移值時,MySQL 必須掃描表的一部分以檢索結果集的起點。隨著偏移值的增加,表格掃描變得更加廣泛,導致執行時間更長。
最佳化解決方案:避免高 OFFSET 值
要最佳化此類查詢,請避免使用高 OFFSET 值。相反,請考慮使用替代方法:
以上是為什麼 MySQL 查詢中的高 OFFSET 值如此慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!