Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL को दो मानों के बीच एक यादृच्छिक मान मिलता है

दरअसल, ROUND((RAND() * (max-min))+min) आप जो चाहते हैं उसे करने के लिए MySQL में सबसे अच्छा तरीका है। यह एक्शनस्क्रिप्ट, जावास्क्रिप्ट और पायथन में भी सबसे अच्छा तरीका है। ईमानदारी से, मैं इसे PHP तरीके से पसंद करता हूं क्योंकि यह अधिक सुविधाजनक है।

क्योंकि मुझे नहीं पता कि आप कितनी पंक्तियों में लौटेंगे, मैं आपको सलाह नहीं दे सकता कि इसके लिए PHP या MySQL का उपयोग करना बेहतर है, लेकिन यदि आप बड़ी संख्या में मूल्यों से निपट रहे हैं तो आप शायद बेहतर हैं MySQL का उपयोग करना।

परिशिष्ट

तो, एक सवाल था कि क्या यह PHP या MySQL में बेहतर है। सिद्धांतों पर बहस करने के बजाय, मैंने निम्नलिखित को चलाया:

<pre><?php

$c = mysql_connect('localhost', 'root', '');

if(!$c) die('!');
echo mysql_select_db('test', $c)?'Connection':'Failure';
echo PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING MYSQL RAND::::::::::::::::::::::::::::::'.PHP_EOL;
$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);

echo  ($end - $start) . " for MySQL select".PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING PHP RAND::::::::::::::::::::::::::::::' .PHP_EOL;
$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);

echo  ($end - $start) . " for PHP select".PHP_EOL;

MySQL लगभग 2-3% तेज है।

यदि आप इसका उपयोग करते हैं, हालांकि (ध्यान दें, MySQL द्वारा अधिक कॉलम वापस आते हैं):

<pre><?php

$c = mysql_connect('localhost', 'root', '');

if(!$c) die('!');
echo mysql_select_db('test', $c)?'Connection':'Failure';
echo PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING MYSQL RAND::::::::::::::::::::::::::::::'.PHP_EOL;
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = mysql_query( 'SELECT ROUND(RAND() * (200-10) + 10) as rd, 200 as two, 10 as ten FROM dual' );
    $r = mysql_fetch_array( $r );
}
$end = microtime(1);

echo  ($end - $start) . " for MySQL select".PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING PHP RAND::::::::::::::::::::::::::::::' .PHP_EOL;
$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);

echo  ($end - $start) . " for PHP select".PHP_EOL;

MySQL 3-4% (बहुत असंगत परिणाम) से पीछे आता है (यदि आप $r[2] के लिए सरणी अनुक्रमणिका असाइनमेंट का उपयोग नहीं करते हैं तो समान परिणाम के बारे में)।

ऐसा लगता है कि प्रमुख अंतर, PHP पर वापस आने वाले रिकॉर्ड्स की संख्या से आता है, न कि रैंडमाइजेशन सिस्टम से। इसलिए, यदि आपको कॉलम ए, कॉलम बी और यादृच्छिक मान की आवश्यकता है, तो PHP का उपयोग करें। यदि आपको केवल यादृच्छिक मान की आवश्यकता है, तो MySQL का उपयोग करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उच्चतम अंकों वाले पहले तीन समूहों के विशिष्ट अंक होने चाहिए

  2. MySQL ठीक 7 दिन पहले की पंक्तियों का चयन करें

  3. MySQL पर निष्पादित अंतिम प्रश्न कैसे दिखाएं?

  4. उबंटू सर्वर में mysql का डिफ़ॉल्ट पासवर्ड 16.04

  5. MySQL इंसर्ट स्टेटमेंट में एक क्लॉज कैसे जोड़ें?