首頁  >  文章  >  資料庫  >  如何加快大型 MySQL 表中的行計數查詢?

如何加快大型 MySQL 表中的行計數查詢?

DDD
DDD原創
2024-11-19 16:46:03373瀏覽

How Can I Speed Up Row Counting Queries in Large MySQL Tables?

加快MySQL 中的行計數

問題:

MySQL 查詢來計算大表中的行數或按特定列對它們進行分組可能會隨著表的增長而變慢。即使對用於分組的列建立索引也不能持續提高效能。

探索:

要最佳化這些查詢,不使用快取的替代方法包括:

  • 使用基於列的存儲引擎:這種方法可能會改進count(*) 查詢,但可能會影響其他操作的效能。
  • 維護總表: 每次插入、刪除或更新行時,觸發器都可以更新單獨的總表。此方法在 SELECT 操作期間提供即時行計數。

實作:

為了維護匯總表,可以使用以下樣板觸發器:

DELIMITER //

CREATE TRIGGER ai_books AFTER INSERT ON books
FOR EACH ROW UPDATE books_cnt SET total = total + 1 WHERE status = NEW.status
//
CREATE TRIGGER ad_books AFTER DELETE ON books
FOR EACH ROW UPDATE books_cnt SET total = total - 1 WHERE status = OLD.status;
//
CREATE TRIGGER au_books AFTER UPDATE ON books
FOR EACH ROW
BEGIN
    IF (OLD.status <> NEW.status)
    THEN
        UPDATE books_cnt SET total = total + IF(status = NEW.status, 1, -1) WHERE status IN (OLD.status, NEW.status);
    END IF;
END
//

透過維護匯總表,無論表大小如何,行計數查詢都可以執行得更快。

以上是如何加快大型 MySQL 表中的行計數查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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