집 >데이터 베이스 >MySQL 튜토리얼 >대규모 MySQL 테이블에서 10개의 무작위 행을 효율적으로 선택하려면 어떻게 해야 합니까?
대형 MySQL 테이블에서 무작위 행 선택 최적화
대량 MySQL 테이블(예: 600,000행)에서 무작위로 10개의 행을 추출하려면 속도와 효율성을 우선시하는 전략이 필요합니다. ORDER BY RAND()
을 사용하는 순진한 접근 방식은 대규모 데이터 세트의 경우 속도가 매우 느립니다. 보다 효과적인 방법은 다음과 같습니다.
다음 쿼리는 훨씬 더 빠른 솔루션을 제공합니다.
<code class="language-sql">SELECT name FROM random WHERE id >= (SELECT FLOOR(RAND() * MAX(id)) FROM random) ORDER BY id LIMIT 10;</code>
이 쿼리는 먼저 id
을 사용하여 FLOOR(RAND() * MAX(id))
열 범위 내에서 임의의 시작점을 결정하는 방식으로 작동합니다. 그런 다음 id
가 이 임의의 시작점보다 크거나 같은 행을 선택합니다. 마지막으로 id
을 기준으로 결과를 정렬하고 출력을 10개 행으로 제한합니다. 이는 ORDER BY RAND()
에 내재된 전체 테이블 스캔을 방지하여 상당한 성능 향상을 가져옵니다. 이 접근 방식을 사용하면 테이블 전체에 무작위 행을 상대적으로 균등하게 배포할 수 있습니다.
위 내용은 대규모 MySQL 테이블에서 10개의 무작위 행을 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!