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 중국어 웹사이트의 기타 관련 기사를 참조하세요!