MySQL을 사용할 때 임의의 값을 생성해야 하는 경우가 있을 수 있습니다. 지정된 범위에 속하는 값입니다. RAND() 함수가 존재하는 동안에는 이 요구 사항을 충족하지 않습니다. 이 기사에서는 MySQL에서 이를 달성하기 위한 최선의 접근 방식을 자세히 설명합니다.
지정된 범위 내에서 임의의 값을 생성하는 MySQL의 최적 방법은 다음과 같습니다.
ROUND((RAND() * (max-min))+min)
이 수식은 RAND()에 max와 min의 차이를 곱하고 결과에 min을 더합니다. ROUND()를 적용하여 정수 값을 얻습니다.
MySQL 솔루션에 해당하는 PHP는 다음과 같습니다.
<code class="php">rand($min, $max)</code>
그러나 벤치마크에서는 많은 수의 값을 처리할 때 MySQL 솔루션이 약간 더 빠르다는 것을 보여줍니다. PHP와 MySQL 사이의 선택은 처리되는 행 수와 임의의 값만 필요한지 또는 추가 열이 반환되는지 여부에 따라 다릅니다.
10 사이의 임의 값을 얻으려면 and 200:
<code class="mysql">SELECT ROUND((RAND() * (200-10))+10) AS `foo`</code>
성능 차이를 더 자세히 설명하기 위해 다음 PHP 스크립트를 실행했습니다.
<code class="php">// MySQL $start = microtime(1); for( $i = 0; $i < 100000; $i++ ) { $r = mysql_query( 'SELECT ROUND(RAND() * (200-10) + 10) FROM dual' ); $r = mysql_fetch_array( $r ); } $end = microtime(1); // PHP $start = microtime(1); for( $i = 0; $i < 100000; $i++ ) { $r = mysql_query( 'SELECT 200 AS two, 10 AS tem FROM dual' ); $r = mysql_fetch_array( $r ); $r[2]= rand($r[0], $r[1]); } $end = microtime(1);</code>
결과에 따르면 MySQL은 임의의 값만 필요한 경우 임의의 값을 생성하는 것이 더 빠르지만 추가 열이 반환되는 경우에는 더 느립니다.
위 내용은 MySQL의 범위 내에서 임의의 값을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!