LIMIT 절은 일반적으로 MySQL 테이블에서 레코드 하위 집합을 검색하는 데 사용됩니다. 그러나 오프셋 값(m)이 커지면 쿼리 성능이 크게 저하될 수 있다. 이는 MySQL이 일반적으로 순차 스캔을 사용하여 원하는 오프셋에 도달할 때까지 전체 테이블을 탐색하기 때문입니다.
이 성능 문제를 완화하려면 기본 키에 해당하는 순차 키를 설정하는 인덱싱 테이블을 생성하는 것이 좋습니다. 대상 테이블. "인덱싱 테이블"로 알려진 이 보조 테이블은 대상 테이블과 원하는 행 사이의 브리지 역할을 합니다.
인덱싱 테이블을 대상 테이블에 조인하면 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;
오프셋이 1,000,000이고 제한이 1000인 행을 검색하려면, 다음 쿼리를 실행합니다.
SELECT mytable.* FROM mytable INNER JOIN seq USING(id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
이 최적화된 쿼리는 인덱싱 테이블을 활용하여 순차 스캔을 우회하고 원하는 행에 직접 액세스합니다. 결과적으로 오프셋 값이 크더라도 성능이 상당히 향상되어야 합니다.
위 내용은 큰 오프셋으로 MySQL LIMIT 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!