使用Where子句在MySQL中進行慢速COUNT(*)查詢
處理涉及COUNT(*)的緩慢MySQL查詢時,了解底層因素至關重要。在這種特殊情況下,從查詢本身或 EXPLAIN 語句中不會立即看出較長的執行時間。
了解問題
相關表,change_event, Change_event_id 欄位上有一個聚集主鍵。在 InnoDB 中,聚集主鍵與資料一起儲存在資料頁中,這與駐留在單獨索引頁中的非聚集索引不同。
聚集主鍵上的範圍掃描問題
所提供的查詢對聚集主鍵執行範圍掃描,其中需要掃描表的很大一部分。這可能非常耗時,因為資料頁可能沒有按排序順序物理存儲,從而導致額外的 I/O 操作。
潛在解決方案
最佳化此查詢時,請考慮實作以下一種或兩種策略:
附加說明:
如果 Change_event_id 欄位確實是自動遞增列,請考慮將其修改為 BIGINT UNSIGNED從零開始。這將防止有符號整數溢位的潛在問題。
以上是為什麼 MySQL 中帶有 WHERE 子句的 COUNT(*) 查詢速度很慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!