MySQL 자습서 무작위 읽기 데이터베이스 튜토리얼 레코드 메서드를 구현 하는 rand () 함수를 사용 하지 마십시오
로 뿐만 아니라 Google 관련 파일, 그리고 모두가 거의 독점적으로 RAND (),이를 위해 순서를 사용 하지만 실제로 매우 심각한 성능 문제를 발견.
당신의 데이터베이스에만 수백, 호출 수 없는 경우 여러 번, 당신은 사랑 하는 어떤 방법을 사용 하 여 어떤 방법.
그러나 100000 또는 1 백만 이상의 데이터 경우 MySQL 서버 랜드에 의해 주문 된 SQL 문을 실행할 때마다 100000 또는 1 백만 이상의 임의의 숫자를 계산 하 고 당신이 상상할 수 있는 얼마나 많은 리소스 데이터베이스 서버에 낭비 된다.
다음 방법 중 하나를 사용 하는 것이 좋습니다.
첫째: 계산 + 제한
1. table_name에서 COUNT (*) 선택 / 전체 데이터베이스 레코드 $count /
2. $randoffset 랜드 = (0, $count-1);
3, 선택한 * table_name 제한 $randoffset, 1 초에서: Maxid
table_name에서 1 일 선택 최대 (ID) / 데이터베이스 기본 키 필드 $maxid
의 최대 가치를 얻을 / 2, $randid = rand (0, $MAXID);
3, 선택한 * table_name에서 어디 id > = $randid 제한 1
Id 연속, 심지어 직접 수를 확인할 수 있습니다 $randid의 세트 작동 하 고 있는 ID를 사용 하 여 ($randid _1, _2 $randid,...) ID 연속 하지 않으면 일괄
데이터를 추출 하, 임의의 숫자의 번호를 사용 하 고 수 다음 어디 ID 나 N ($randid _1, _2 $randid,... $randid _100) 제한 10, 10 레코드를 추출 하기 위해 100 개의 난수를 계산, 비록 그것은 훨씬 더 비용 효율적인 Rand ()는 하나의 ()에 대 한 임의의 숫자의 수백만의 수천 수백 수천의 수만 계산 하.