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

सिद्धांत DQL अशक्त स्तंभों पर जुड़ते हैं

समाधान 1:सिद्धांत मूल SQL

इसे प्राप्त करने का एक तरीका मूल MySQL प्रश्नों का उपयोग करना है। इसके लिए सिद्धांत का मूल SQL ResultSetMapping

एक मूल SQL क्वेरी को दो बार (विभिन्न मापदंडों के साथ) निष्पादित करते समय मुझे एक समस्या का सामना करना पड़ा, कि दूसरी क्वेरी का परिणाम-सेट पहले वाले के समान था।गिटहब पर निम्नलिखित पोस्ट इसे मेरे लिए हल किया।

समाधान 2 :MySQL के आंतरिक अनुकूलक का उपयोग करना

निम्नलिखित जॉइन कंडीशन का उपयोग करने से MySQL के आंतरिक अनुकूलक का उपयोग होगा और इसे ref_or_null जॉइन-टाइप

SELECT a.*, b.* 
FROM a
   INNER JOIN b ON 
       a.column = b.column 
       OR (a.column IS NULL AND b.column IS NULL)

तब DQL में इस जॉइन-कंडीशन का उपयोग करना संभव है, जिसे अनुकूलित करने के लिए SQL में अच्छी तरह से अनुवादित किया जाएगा।

समाधान 3:कस्टम DQL फ़ंक्शन लिखें

मैंने एक कस्टम डीक्यूएल-फ़ंक्शन लिखा है जिसका अनुवाद निम्नलिखित खंड में किया गया है:

SELECT a.*, b.* 
FROM a
   INNER JOIN b ON (a.column <=> b.column) = 1

दुर्भाग्य से = 1 . से छुटकारा पाने में सक्षम नहीं था इस खंड का हिस्सा। यह काम कर गया, लेकिन एक प्रमुख . का कारण बना मेरी क्वेरी पर प्रदर्शन प्रभाव:17s बनाम 0.5s, कुछ (गैर-वैज्ञानिक) संकेत देने के लिए।
इसलिए मैं उस रास्ते से आगे नहीं गया।




  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 प्रति परिणाम दिनांक समय तक LIMIT अंतिम तालिका के साथ एकाधिक तालिकाओं में शामिल हों

  2. MySQL में वर्जन स्ट्रिंग (x.y.z) की तुलना कैसे करें?

  3. चयन ''-'' का अर्थ क्या है

  4. कौन सा MySQL कांटा/संस्करण चुनना है?

  5. फिल्मों को 2 चीजों के आधार पर छाँटना