問題:
MySQL 查詢來計算大表中的行數或按特定列對它們進行分組可能會隨著表的增長而變慢。即使對用於分組的列建立索引也不能持續提高效能。
探索:
要最佳化這些查詢,不使用快取的替代方法包括:
實作:
為了維護匯總表,可以使用以下樣板觸發器:
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中文網其他相關文章!