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

MySQL ORDER BY RAND () फ़ंक्शन ऑर्डर कब करता है?

आप सही कह रहे हैं, यह WHERE, GROUP BY, और HAVING के साथ पंक्तियों की संख्या को कम करने के बाद ORDER BY लागू करेगा। लेकिन यह LIMIT से पहले ORDER BY लागू होगा।

इसलिए यदि आप पंक्तियों की संख्या को पर्याप्त रूप से फ़िल्टर करते हैं, तो हाँ, रैंड द्वारा ऑर्डर () एक महान प्रदर्शन प्रभाव के बिना आप जो चाहते हैं उसे प्राप्त कर सकते हैं। कोड का एक वैध लाभ है जो सरल और आसानी से पठनीय है।

मुसीबत तब आती है जब आप सोचते हैं आपकी क्वेरी को पंक्तियों को कुछ छोटा कर देना चाहिए, लेकिन समय के साथ जैसे-जैसे आपका डेटा बढ़ता है, पंक्तियों की संख्या को क्रमबद्ध करने की आवश्यकता फिर से बड़ी हो जाती है। चूंकि आपकी क्वेरी तब क्रमबद्ध परिणाम पर LIMIT 10 इस तथ्य को छुपाती है कि आप 500k पंक्तियों पर ORDER BY RAND() कर रहे हैं। आप देखते हैं कि प्रदर्शन रहस्यमय तरीके से खराब होता जा रहा है।

मैंने अपनी पुस्तक SQL Antipatterns:में यादृच्छिक पंक्ति चुनने के वैकल्पिक तरीकों के बारे में लिखा है। डेटाबेस प्रोग्रामिंग के नुकसान , या अन्य उत्तरों में यहाँ स्टैक ओवरफ़्लो पर:



  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. नोड माइस्क्ल कॉल छोड़ने के बाद क्वेरी को एनक्यू नहीं कर सकता

  3. डीएओ के साथ लेनदेन प्रबंधन

  4. हाइबरनेट आशावादी लॉकिंग..यह कैसे काम करता है?

  5. उपयोगकर्ता खाता प्रबंधन, भूमिकाएँ, अनुमतियाँ, प्रमाणीकरण PHP और MySQL -- भाग 5