집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 ORDER BY RAND() 함수는 실제로 어떻게 작동합니까?
MySQL의 ORDER BY RAND() 함수 작동 방식
MySQL의 ORDER BY RAND() 함수는 겉으로는 무작위 결과를 생성하지만 실제 메커니즘은 다릅니다. 일반적으로 가지고 있는 믿음으로부터. 가정과 달리 MySQL은 정렬에 영향을 미치는 임의 값 열을 추가하지 않습니다. 대신 다음 프로세스를 사용합니다.
예기치 않은 실행 시간
제공된 테스트 쿼리는 예상치 못한 실행 시간을 보여줍니다.
Query | Execution Time |
---|---|
SELECT * FROM table ORDER BY RAND() LIMIT 1 | 30-40 seconds |
SELECT id FROM table ORDER BY RAND() LIMIT 1 | 0.25 seconds |
SELECT id, username FROM table ORDER BY RAND() LIMIT 1 | 90 seconds |
이런 실행 시간의 변화는 각 쿼리에서 검색되는 데이터가 다르기 때문에 발생합니다. 전체 행(*)을 선택하면 특정 열(id)만 검색하거나 이미 인덱싱된 데이터(id)를 가져오는 것보다 비용이 더 많이 듭니다.
빠른 무작위 선택을 위한 대체 방법
ORDER BY RAND()는 최적의 성능을 제공하지 않을 수 있지만 대체 방법은 더 빠른 결과를 제공할 수 있습니다.
위 내용은 MySQL의 ORDER BY RAND() 함수는 실제로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!