>데이터 베이스 >MySQL 튜토리얼 >LIMIT 오프셋이 큰 MySQL 쿼리가 왜 이렇게 느린가요?

LIMIT 오프셋이 큰 MySQL 쿼리가 왜 이렇게 느린가요?

Linda Hamilton
Linda Hamilton원래의
2024-12-13 01:17:09559검색

Why Are MySQL Queries with Large LIMIT Offsets So Slow?

더 높은 LIMIT 오프셋이 MySQL 쿼리 속도에 미치는 영향

ORDER BY와 함께 LIMIT 오프셋이 증가하는 대규모 MySQL 테이블을 쿼리할 때, 사용자는 쿼리 속도가 눈에 띄게 느려질 수 있습니다. 이는 테이블이 1,600만 개의 레코드를 초과하거나 크기가 약 2GB일 때 특히 분명합니다.

예를 들어 오프셋이 작은 다음 쿼리는 오프셋이 큰 쿼리보다 훨씬 빠르게 실행됩니다.

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30

두 쿼리 모두 30개 행만 검색하지만 후자는 무시할 수 있는 ORDER 오버헤드에도 불구하고 훨씬 더 오래 걸립니다. BY.

이 시나리오를 최적화하려면 대체 접근 방식을 사용하는 것이 좋습니다.

  1. 가져온 행 집합의 마지막 ID를 저장합니다(예: lastId = 530).
  2. WHERE id > 조건을 포함하도록 쿼리를 수정합니다. lastId.
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30

영점 오프셋을 지속적으로 유지함으로써 반복적으로 많은 양의 데이터를 가져오는 경우에도 쿼리가 최적의 속도로 일관되게 수행됩니다.

위 내용은 LIMIT 오프셋이 큰 MySQL 쿼리가 왜 이렇게 느린가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.