2010-06-11 6 views
0

mysql 테이블에서 임의의 레코드를 선택하기 위해 random() 명령을 제외한 모든 내장 함수가 있습니까?mysql 테이블의 무작위 레코드

+0

팁 및 주문시 임의의 문제가 있습니까? –

+1

비슷한 질문보기 : http://stackoverflow.com/questions/1244555/how-can-i-optimize-mysqls-order-by-rand-function http://stackoverflow.com/questions/1823306/alerternative-to- mysql-order-by-rand http://stackoverflow.com/questions/1868102/order-by-rand-alternative http://stackoverflow.com/questions/2882647/mysql-order-by-rand-name-asc http : //stackoverflow.com/questions/2663710/how-does-mysqls-order-by-rand-work – nickf

답변

1

나는 그렇게 생각하지 않습니다 ... 왜 그 작품을 사용하고 싶지 않으십니까?

나는 꽤 그것이 ORDER BY RAND() 일 것이라고 확신합니다.

많은 행의 성능 문제 일 수 있습니다 ... 많은 행이 있습니까?

+0

아니요, 약 1000 개의 팁을 가지고 있지만 약 10000 명의 사용자가 있으며, 프로세스가 느려지고 팁도 있습니다. 카테고리를 기반으로합니다. – shivg

2

아니요,하지만 두 가지 질문을 할 수 있습니다. 의사 PHP - 및 - MySQL의 코드에서 :

$max = SELECT COUNT(*) FROM example; 
$rand = rand(0, $max-1); 
SELECT * FROM example LIMIT $rand, 1; 

올바른 방법은 아마 저장 프로 시저에 그것을 만들 것입니다.

+0

귀하의 즉각적인 답변을 보내 주셔서 감사합니다. 실제로 나는 사용자를위한 도움말을 무작위로 표시하기 위해이 두 가지 선택 쿼리를 실행하고 싶지 않습니다. 다른 아이디어가 있습니까? – shivg

+0

@rshivaganesh -이 방법은 'order by rand()'보다 * 많은 * 성능이 우수합니다. – nickf

+0

잘 모르겠습니다. 작은 테이블에서 ORDER BY RAND()와 함께 갈 것입니다. 어쩌면 첫 번째 쿼리의 결과를 어떤 식 으로든 캐시 할 수 있습니까? –

1
SELECT * FROM users ORDER BY RAND() Limit 0, 1; 
+0

은'LIMIT 0, 1' 또는'LIMIT 1'이어야합니다. – nickf

+1

@nickf는 정말로 중요합니까? ;-) –

+0

@nickf : - 편집하지만 'Limit 1, 1;'이라고 생각합니다. 무작위로 데이터를 표시하기를 원하는 것처럼 잘못된 것도 아닙니다. – Salil