首頁  >  文章  >  資料庫  >  儘管使用了主索引,為什麼我的“SELECT COUNT(*) FROM change_event”查詢如此慢?

儘管使用了主索引,為什麼我的“SELECT COUNT(*) FROM change_event”查詢如此慢?

Susan Sarandon
Susan Sarandon原創
2024-10-30 22:43:29999瀏覽

Why is my

儘管使用了索引,「SELECT COUNT(*)」查詢的效能仍然很慢

上下文:

上下文:

查詢「SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391';」 MySQL 中的執行速度異常緩慢,執行時間超過一分鐘。儘管“change_event_id”列上存在主索引,但還是如此。

InnoDB 聚集主鍵:

在 InnoDB 中,主鍵是聚集的,這表示它們是與資料頁中的資料行一起儲存。這需要在範圍掃描期間掃描潛在的大行數據,這會降低效能。 “change_event”表格包含一個 TEXT 列,進一步增加了行的寬度。

  • 最佳化技術:
  • 最佳化表: 執行「OPTIMIZE TABLE」可以重新排列資料頁以按主鍵排序。這可能會提高聚集主鍵上的範圍掃描的效能。

建立附加非主索引:僅在「change_event_id」欄位上建立非主索引可以提供掃描一系列值的更快方法。建立索引後應檢查解釋計劃,以確保其使用率。

  • 其他建議:
調整資料型態: 如果「change_event_id」欄位從零遞增,請考慮將其遞增,請考慮將其遞增資料類型變更為“bigint unsigned”以避免負值。

以上是儘管使用了主索引,為什麼我的“SELECT COUNT(*) FROM change_event”查詢如此慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn