LIMIT 절에 큰 오프셋이 있는 MySQL 쿼리 최적화
LIMIT 절에 상당한 오프셋이 있는 MySQL 쿼리를 실행할 때 성능 문제가 발생할 수 있습니다. 생기다. SELECT * FROM table LIMIT m, n;과 같은 기존 오프셋 기반 방법이 큰 오프셋 값(예: 1,000,000 이상)에 대해 비효율적일 때 이는 문제가 될 수 있습니다.
해결책: 인덱싱 테이블 순차 키 매핑
이러한 쿼리를 최적화하려면 대체 접근 방식을 사용할 수 있습니다. 여기에는 대상 테이블의 기본 키에 대한 순차 관계를 설정하는 인덱싱 테이블을 만드는 작업이 포함됩니다. 이 인덱싱 테이블을 대상 테이블에 조인하고 WHERE 절을 활용하면 원하는 행을 보다 효율적으로 검색할 수 있습니다.
인덱싱 테이블 생성
CREATE TABLE seq ( seq_no INT NOT NULL AUTO_INCREMENT, id INT NOT NULL, PRIMARY KEY (seq_no), UNIQUE (id) );
시퀀스 채우기
TRUNCATE seq; INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
오프셋으로 행 검색
SELECT mytable.* FROM mytable INNER JOIN seq USING (id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
이 예에서는 오프셋에서 1000개의 행이 검색됩니다. 1,000,000. 이 방법은 인덱싱 테이블을 활용하여 원하는 오프셋을 대상 테이블의 올바른 행에 매핑하므로 기존 오프셋 기반 접근 방식에 비해 쿼리 성능이 크게 향상됩니다.
위 내용은 LIMIT 절에서 큰 오프셋을 사용하여 MySQL 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!