ORDER BY RAND() - 임의의 레코드를 뽑을 때

2014. 8. 31. 02:22 from Dev/sql

가끔 가다 여러 개의 레코드 중에서 임의의 하나를 뽑아내야 하는 경우가 있습니다. 

간단하게는 일단 레코드를 뽑아서 PHP 등등에서 랜덤으로 index를 결정해서 할 수가 있고, 복잡하게는(대상 레코드가 많으면) 미리 뽑아서 별도 파일이나 테이블에 저장한 후에 뽑는 방법도 있겠지요.

대상 레코드의 갯수가 많지 않은 경우에는 간단하게 SQL 에서 처리하는 방법이 있습니다 :


SELECT * FROM Member WHERE m_kind = 1 ORDER BY RAND() LIMIT 1;


주의할 점은, 절대 scalable 하지 않다는 것.. temporary table을 생성하고 소트를 하기 때문에 레코드 갯수가 많은 때 사용하면 안되겠습니다. 하지만 몇 개만 뽑아서 할 경우에 간단히 사용하기에는 좋은 방법일 수 있습니다. ^^;;

Posted by banasun :