>데이터 베이스 >MySQL 튜토리얼 >MySQL 데이터베이스에서 단순 무작위 샘플을 효율적으로 얻으려면 어떻게 해야 합니까?

MySQL 데이터베이스에서 단순 무작위 샘플을 효율적으로 얻으려면 어떻게 해야 합니까?

DDD
DDD원래의
2025-01-05 16:25:44652검색

How Can I Efficiently Get a Simple Random Sample from a MySQL Database?

MySQL 데이터베이스에서 단순 무작위 샘플을 효율적으로 검색하는 방법

SQL에서는 대규모 데이터 세트에서 무작위 샘플을 얻는 것이 어려울 수 있습니다. 기존 접근 방식에서는 임의의 값으로 행을 정렬하고 원하는 행 수를 선택하는 작업이 포함됩니다. 그러나 이 방법은 비용이 많이 드는 정렬 및 RAND() 평가가 필요하므로 비효율적입니다.

특히 MySQL의 경우 대체 접근 방식을 사용하면 성능이 크게 향상됩니다. 균일하게 분포된 난수를 생성하는 MySQL RAND() 함수의 고유한 기능을 활용하면 정렬을 완전히 피할 수 있습니다.

공식은 다음과 같습니다.

select * from table where rand() <= ( desired sample size / total rows )

이 쿼리는 각 행에 대한 난수이며 값 범위는 0부터 1입니다. 이 난수를 원하는 샘플 크기 및 총 행 수를 기반으로 한 임계값과 비교하여 다음을 표시할지 여부를 결정할 수 있습니다. row.

이 접근 방식을 사용하면 정렬 오버헤드 없이 효율적인 O(n) 성능을 얻을 수 있습니다. 데이터베이스는 각 행에 대한 RAND() 평가의 상당한 계산 시간이나 정렬의 복잡성을 초래하지 않고 원하는 샘플 크기를 신속하게 선택할 수 있습니다.

MySQL의 rand() 기능을 활용하여 우리는 다음과 같은 능력을 얻습니다. 최적의 속도와 효율성으로 단순 무작위 샘플을 검색합니다.

위 내용은 MySQL 데이터베이스에서 단순 무작위 샘플을 효율적으로 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.