針對執行時間較慢的大型表的MySQL 查詢最佳化
您的MySQL 查詢執行時間超過一分鐘,因為它缺乏有效的索引優化資料檢索。表的巨大規模,尤其是超過 100 萬筆記錄,加劇了問題。
在 id 列上對錶建立索引對於加快涉及按 id 排序的查詢至關重要。但是,根據提供的信息,僅靠索引似乎是不夠的。
以下是一些提高查詢效能的建議:
使用帶有WHERE 子句的範圍查詢
不要使用LIMIT 來檢索特定範圍的記錄,而是考慮使用帶有關係運算子的WHERE 子句。例如,以下查詢使用範圍查詢來選擇id 值大於或等於499501 的記錄,並將結果限制為500 行:
select * from `ratings` where id >= 499501 limit 500;
此查詢的執行速度應該快得多,因為它利用了索引id 列以有效地找到所需的記錄。
解釋查詢計畫
要進一步解決問題,請執行 EXPLAIN 查詢以深入了解查詢執行計畫。這將提供有關查詢類型、所使用的索引以及要掃描的估計行數的詳細資訊。
explain select * from `ratings` where id >= 499501 limit 500;
排除死鎖
死鎖發生在以下情況兩個或多個並發事務等待彼此釋放鎖,從而有效地阻止其中一個事務繼續進行。雖然提供的資訊並未表明死鎖是可能的原因,但值得考慮。
以上是為什麼我的 MySQL 查詢大表這麼慢,要如何最佳化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!