> 데이터 베이스 > MySQL 튜토리얼 > 성능 향상을 위해 MySQL에서 행 계산 속도를 어떻게 높일 수 있습니까?

성능 향상을 위해 MySQL에서 행 계산 속도를 어떻게 높일 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-26 01:19:10
원래의
1002명이 탐색했습니다.

How Can I Speed Up Row Counting in MySQL for Improved Performance?

Swift 결과를 위해 MySQL에서 행 계산 가속화

대형 MySQL 테이블에서 행 계산은 시간이 많이 걸리는 작업일 수 있습니다. 테이블에 수백만 개의 행이 포함된 경우 특히 그렇습니다. 표준 SELECT COUNT(*) 쿼리는 완료하는 데 몇 초가 걸릴 수 있으며 이는 심각한 성능 병목 현상이 될 수 있습니다.

인덱스가 도움이 되지 않는 이유

인덱싱된 열은 종종 쿼리 성능을 향상시킬 수 있습니다. 그러나 행 개수를 계산하는 경우 인덱스가 큰 이점을 제공하지 못할 수 있습니다. 이는 쿼리가 행 수를 결정하기 위해 테이블의 모든 행을 계속 스캔해야 하기 때문입니다.

대체 기술

요약 정보를 캐싱하거나 업데이트하는 것 외에도 다음이 있습니다. 행 계산 쿼리 속도를 높이는 제한된 기술. 한 가지 잠재적인 해결책은 Apache Parquet와 같은 열 기반 스토리지 엔진을 사용하는 것입니다. 열 기반 엔진은 분석 쿼리용으로 설계되었으며 행 계산을 포함한 특정 유형의 쿼리에 대해 더 빠를 수 있습니다. 그러나 열 기반 엔진은 모든 사용 사례에 적합하지 않을 수 있으며 다른 쿼리 유형에는 단점이 있을 수 있습니다.

트리거 기반 요약 테이블

가장 효과적인 방법 행 계산 쿼리 속도를 높이는 것은 요약 테이블을 유지하는 것입니다. 이 요약 테이블은 인덱싱된 열의 가능한 각 값에 대한 행 수를 저장할 수 있습니다. 행이 삽입, 삭제 또는 업데이트되면 트리거는 이에 따라 요약 테이블을 업데이트할 수 있습니다. 이 접근 방식은 테이블 크기에 관계없이 거의 즉각적인 행 개수 쿼리를 제공할 수 있습니다.

다음은 트리거 기반 요약 테이블의 예입니다.

CREATE TABLE books_cnt (
  status VARCHAR(255) NOT NULL,
  total INT NOT NULL
);

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;
로그인 후 복사

이 트리거 사용 기반 요약 테이블을 사용하면 간단한 쿼리를 사용하여 각 상태 값에 대한 행 수를 검색할 수 있습니다.

SELECT status, total FROM books_cnt;
로그인 후 복사

이 쿼리는 어떤 경우에도 즉시 결과를 반환합니다. 큰 테이블용.

위 내용은 성능 향상을 위해 MySQL에서 행 계산 속도를 어떻게 높일 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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