」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我對change_event 表的「SELECT COUNT(*)」查詢如此慢?

為什麼我對change_event 表的「SELECT COUNT(*)」查詢如此慢?

發佈於2024-11-18
瀏覽:444

Why are my \

解決MySQL 上緩慢的「SELECT COUNT(*)」查詢

對change_event 表的查詢,對超過特定行的行進行數,正在經歷嚴重的延誤。但為什麼?讓我們深入研究一下可能的原因。

揭秘InnoDB的行為

MySQL的InnoDB引擎使用聚集主鍵,這意味著主鍵與資料頁中的行資料一起存儲,而不是比單獨的索引頁。因此,範圍掃描(例如您的掃描)需要掃描資料頁中所有可能較寬的行。表的 xml_diff 欄位(一種 TEXT 資料類型)加劇了這一因素。

優化策略

為了加速查詢,有兩種方法值得考慮:

  • 優化表: 該命令將資料頁重新組織成排序的順序,可能會提高範圍掃描的效率。
  • 建立附加索引:僅在change_event_id欄位上建立非主索引會在索引頁中建立該列的副本。此索引的掃描速度比資料頁快得多。建立後驗證解釋計劃以確認其使用率。

其他提示:

要進一步提高效能,請考慮將 change_event_id 欄位更改為 bigint unsigned。此步驟可防止負值,還可以簡化處理。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3