MySQL 랜덤 읽기 데이터베이스 레코드 메서드를 구현 하는 rand () 함수를 사용 하지 않습니다.

출처: 인터넷
작성자: 사용자
키워드: 웹 프로그래밍 MySQL 자습서

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 ()는 하나의 ()에 대 한 임의의 숫자의 수백만의 수천 수백 수천의 수만 계산 하.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.