[mysql] ORDER BY rand()

cateto·2021년 12월 6일
0

ORDER BY RAND()

이벤트 성격의 단순 추첨 또는 임의의 사용자 조회 같은 기능을 SQL을 이용해 처리할 때가 있다. 가장 쉽게 사용할 수 있는 방법이 ORDER BY RAND()다. ORDER BY RAND()는 RAND() 함수로 발생되는 임의의 값을 각 레코드별로 부여하고, 그 임의값으로 정렬을 수행한다. 아주 간단하게 랜덤하게 레코드를 가져올 수 있기 때문에 ORDER BY RAND()가 자주 사용되곤 한다.

ORDER BY RAND()를 이용한 임의 정렬이나 조회는 절대 인덱스를 이용할 수 없다. 정렬해야 할 레코드가 적으면 문제가 되지 않는다. 하지만 대량의 레코드를 대상으로 임의 정렬해야 할 때 문제가 될 수 있다. 인덱스는 변수가 아닌 정해진 값을 순서대로 정렬해서 가지고 있기 때문에 인덱스를 이용한 임의 정렬은 구현할 수 없을 것이다. 반대로 임의의 값을 별도의 칼럼으로 생성해 두고 그 칼럼에 인덱스를 생성하면 손쉽게 인덱스를 이용한 임의 정렬을 구현할 수 있다.

출처: https://weicomes.tistory.com/322

profile
Curious for Everything

0개의 댓글