사용자 도구

사이트 도구


database:mysql:random

MySql Random

랜덤하게 하나의 행을 선택하기가 필요하기도 하다. 참조

간편하지만 성능이 떨어지는 방법

정렬 기준을 rand() 함수로 잡는다.

SELECT * FROM TABLE_NAME ORDER BY rand() LIMIT 1;

성능을 높이려면

-- 원하는 행의 갯수보다 작은 랜덤 값을 생성하여 $temp 변수에 저장하고,
-- 쿼리 1
SELECT CAST(RAND()*(SELECT COUNT(*) FROM TABLE) AS SIGNED)-1;
-- 혹은 쿼리 2
SELECT FLOOR(RAND() * COUNT(*)) AS offset FROM TABLE;
 
-- limit 시작값으로 지정한다.
 
SELECT * FROM table1 LIMIT  $temp,1;
database/mysql/random.txt · 마지막으로 수정됨: 2012/11/28 12:55 저자 kwon37xi