대규모 MySQL 테이블에서 행 계산 쿼리 속도를 어떻게 높일 수 있습니까?

DDD
풀어 주다: 2024-11-19 16:46:03
원래의
366명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿