问题:
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中文网其他相关文章!