문제:
대형 테이블의 행 수를 계산하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!