首頁 > 資料庫 > mysql教程 > 為什麼 MySQL 查詢中的高 LIMIT OFFSET 值如此緩慢?

為什麼 MySQL 查詢中的高 LIMIT OFFSET 值如此緩慢?

DDD
發布: 2024-12-15 11:14:11
原創
668 人瀏覽過

Why Are High LIMIT OFFSET Values in MySQL Queries So Slow?

較高的LIMIT OFFSET 對MySQL 查詢效能的影響

當執行帶有LIMIT 子句和大型表的SELECT 查詢時,設定較高的LIMIT OFFSET偏移值會大幅減慢查詢的執行時間。當使用帶有主鍵的 ORDER BY 子句時,這種行為尤其明顯。

例如,考慮一個名為「large」的表,其中包含超過 1600 萬筆記錄(大小為 2GB)。與具有較高偏移量的查詢相比,如下所示的查詢:

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
登入後複製

執行速度要快得多,例如:

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
登入後複製

兩個查詢檢索相同數量的記錄(30 ),說明效能差異不是由於ORDER BY操作的開銷造成的。

為了最佳化查詢,建議盡量減少使用high限制偏移量。相反,請考慮使用 WHERE 子句根據已知標識符選擇記錄,這將導致偏移量為零。

例如,如果目標是檢索最新30 行,則可以使用以下查詢:

SELECT * FROM large WHERE id > last_known_id LIMIT 0, 30
登入後複製

透過維護最後一個已知ID (last_known_id) 的記錄,這種方法允許查詢始終從零偏移量開始,顯著改善表演。

以上是為什麼 MySQL 查詢中的高 LIMIT OFFSET 值如此緩慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板