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

mysql:बिना क्रम के बाएं जॉइन के बाद ऑर्डर को कैसे सहेजना है?

(ORDER BY . के नुकसान की व्याख्या करते हुए )

SQL मानक अनिवार्य रूप से कहता है कि एक सबक्वेरी पंक्तियों का एक अनियंत्रित सेट है। इसका तात्पर्य यह है कि अनुकूलक ORDER BY . को अनदेखा करने के लिए स्वतंत्र है 'व्युत्पन्न' तालिका में:FROM ( SELECT ... ORDER BY ) . MySQL और MariaDB के "हाल के" संस्करणों में, ऐसे ORDER BYs गिराए जा रहे हैं। ऐसे और भी मामले हैं जहां ORDER BY अनदेखा किया जाता है।

कुछ . में स्थितियाँ (इस बारे में निश्चित नहीं), एक LIMIT 99999999 adding जोड़ना (बड़ी संख्या) ORDER BY . के बाद ऑप्टिमाइज़र को ORDER BY . करने के लिए चकमा देता है . हालांकि, बाद में "आदेश" को अनदेखा करना अभी भी मुफ़्त है।

MySQL के लिए एक सामान्य नियम:सबक्वेरी से बचें। (ऐसे मामले हैं जहां सबक्वेरी तेज हैं, लेकिन आपकी नहीं।)

एक मजबूत नियम:आपको जरूरी एक ORDER BY यदि आप परिणामों को क्रमबद्ध करना चाहते हैं तो सबसे बाहरी पर।

अगर आपने LIMIT 3 जोड़ा होता आपकी पहली क्वेरी में व्युत्पन्न तालिका में, आपको केवल चार्ल्स, डेविड, जेम्स, मिलेगा लेकिन जरूरी नहीं कि उसी क्रम में हो . यानी, आपको दो ORDER BYs . की आवश्यकता होगी - एक व्युत्पन्न तालिका में, एक बहुत अंत में।



  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. लोड डेटा का उपयोग करते समय MySQL में दिनांक डेटा कैसे लोड करें?

  3. क्या MySQL सी में कॉलबैक की अनुमति देता है जैसे कि जब कोई बदलाव होता है, तो मुझे अधिसूचित किया जा सकता है?

  4. 'फ़ील्ड सूची' में अज्ञात कॉलम जब तैयार स्टेटमेंट का प्लेसहोल्डर सबक्वेरी में होता है

  5. MySQL में डेटाटाइम कॉलम से दिनांक कैसे प्राप्त करें