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

चयन कथन में RAND () का उपयोग करते समय MySQL समान परिणाम क्यों लौटा रहा है?

रैंड () बीज

MySQL सिस्टम क्लॉक टू सीड RAND() . का उपयोग करता है जब कोई दूसरा मूल्य नहीं है। बीज मान माइक्रोसेकंड में है, और मैं RAND() . की समस्या को पुन:उत्पन्न नहीं कर सकता जैसा कि आप वर्णन कर रहे हैं, उसी मान का दो बार उत्पादन करना।

यदि आप MySQL वर्कबेंच खोलते हैं और एक ही समय में दो स्टेटमेंट निष्पादित करते हैं। प्रत्येक के लिए आउटपुट अलग है।

SELECT RAND();
SELECT RAND();

जब आप एक से अधिक टैब खोलते हैं और समान परिणाम प्राप्त करते हैं। यह संभवतः एक कैशिंग समस्या है, लेकिन आप कहते हैं कि आप कैशिंग को रोकने के लिए URL पर मुहर लगा रहे हैं। इसलिए सर्वर पर SQL लॉगिंग सक्षम करें और सत्यापित करें कि नई क्वेरीज़ कॉल की जा रही हैं।

रैंड() प्रदर्शन

ORDER BY RAND() धीमा है क्योंकि इसे पूरी तालिका को पढ़ने के लिए MySQL की आवश्यकता होती है। यहां तक ​​कि ORDER BY RAND() LIMIT 1 अभी भी पूरी तालिका को पढ़ने के लिए MySQL की आवश्यकता है।

अद्यतन करें:

आप देख सकते हैं कि SQL क्या यादृच्छिक मान उत्पन्न कर रहा है।

$query = "SELECT *, RAND() AS `X`
          FROM customers
          WHERE customer_group='consumables' AND customer_updated < DATE_SUB(NOW(), INTERVAL 1 DAY)
          ORDER BY `X`
          LIMIT 10";

इसमें कॉलम X . शामिल होगा प्रत्येक पंक्ति के लिए। क्वेरी को ऑर्डर करने के लिए उपयोग किया जाने वाला यादृच्छिक मान। इसे आउटपुट में जोड़ें और देखें कि क्या प्रत्येक ब्राउज़र वास्तव में . है 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. JSON_LENGTH () - MySQL में JSON दस्तावेज़ की लंबाई लौटाएं

  2. कौन सा अधिक कुशल है:एकाधिक MySQL टेबल या एक बड़ी टेबल?

  3. PHP स्क्रिप्ट पर MySQL डेटाबेस कैसे दिखाएं?

  4. पारंपरिक प्रतिकृति से GTID में माइग्रेट करें

  5. डॉकर कंटेनर से दूरस्थ MySQL डीबी से कनेक्ट करें