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

यादृच्छिक परिणाम लौटाएं (रैंड द्वारा क्रम ())

RAND() . द्वारा ऑर्डर करने का कारण धीमा हो सकता है कि आप कुछ भी वापस करने से पहले डेटाबेस को वास्तव में पूरी तालिका को सॉर्ट करने के लिए मजबूर कर रहे हैं। केवल एक टेबल स्कैन में लोड को कम करना बहुत तेज़ है (यद्यपि अभी भी कुछ धीमा है)।

इसका मतलब है कि आप ऑर्डर देने से बचकर ही रास्ते का हिस्सा बन सकते हैं:

  SELECT *
    FROM my_table
   WHERE RAND() < 0.1
ORDER BY RAND()
   LIMIT 100

यह तालिका में सभी पंक्तियों में से लगभग 1% का चयन करेगा, उन्हें क्रमबद्ध करेगा और शीर्ष 100 लौटाएगा। बस ध्यान दें कि यहां मुख्य मुद्दा (साथ ही @ cmd के उत्तर के साथ) यह है कि आप सुनिश्चित नहीं हो सकते कि क्वेरी वापस आती है कुछ भी।

उपरोक्त दृष्टिकोण में एक संपूर्ण तालिका स्कैन शामिल होना चाहिए (यह तय करने के लिए कि कौन सी पंक्तियों का उपयोग करना है) इसके बाद लगभग 1% पंक्तियों का एक प्रकार होना चाहिए। यदि आपके पास बहुत सारी पंक्तियाँ हैं, तो आप उसके अनुसार प्रतिशत कम कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql एकाधिक कॉलम में सरणी है

  2. कॉलम के लिए अनुकूलित डेटाटाइप कैसे चुनें [innodb विशिष्ट]?

  3. PHP स्ट्रेटोटाइम () 1 घंटे से गलत काम करता है?

  4. एक संग्रहीत प्रक्रिया निष्पादित करते समय PHP अपाचे क्रैश हो जाता है

  5. PHP स्ट्रिप_टैग के समतुल्य MySQL क्वेरी क्या है?