LIMIT 절의 큰 OFFSET으로 MySQL 성능 향상
MySQL SELECT 쿼리의 LIMIT 절에 상당한 오프셋을 적용하면서 성능 저하 발생 ? 이 문제는 'm'으로 표시되는 오프셋이 특정 임계값(예: 1,000,000)을 초과하여 쿼리 실행이 느려질 때 발생합니다.
특정 테이블 시나리오에서는 LIMIT 절을 사용하는 것이 필수적이지만 방법이 있습니다. ID 범위('id > 1,000,000 제한 n')를 기반으로 한 필터링과 같은 대안을 사용하지 않고 성능을 최적화합니다.
인덱싱 테이블 기반 최적화
대상 테이블의 기본 키와 순차적 관계를 설정하는 인덱싱 테이블입니다. 이 인덱싱 접근 방식은 쿼리 성능을 크게 향상시킬 수 있습니다.
인덱싱 테이블 생성:
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;
인덱싱을 사용하여 최적화된 쿼리:
1,000,000 오프셋에서 1000개 행을 가져오려면:
SELECT mytable.* FROM mytable INNER JOIN seq USING(id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
이 수정된 쿼리는 인덱싱 테이블을 활용하여 순차 스캔을 우회하고 오프셋을 기반으로 원하는 행을 효율적으로 검색하여 성능을 크게 향상시킵니다.
위 내용은 LIMIT 절에서 큰 OFFSET을 사용하여 MySQL 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!