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

एक समग्र सूचकांक के साथ या पूरी तरह से उपयोग करने के लिए एकाधिक बाएं जॉइन कैसे करें?

आपकी क्वेरी से (पठनीयता स्वरूपित)

SELECT 
      table1.*, 
      tb21.year, 
      tb21.month, 
      tb21.day, 
      tb22.year, 
      tb22.month, 
      tb22.day 
   FROM 
      table1
         LEFT JOIN table2 tb21 
            ON table1.year = tb21.year
            AND table1.month = tb21.month
            AND (tb21.day = table1.day 
              OR tb21.day = table1.day+1)
         LEFT JOIN table2 tb22 
            ON table1.year = tb22.year
            AND table1.month = tb22.month
            AND (tb22.day = table1.day+2 
              OR tb22.day = table1.day+3)

आपके द्वारा प्रदान की गई प्रतिबंधात्मक सामग्री के अलावा, आइए देखें कि आप उसी दिन के डेटा की तुलना + 1, +2 और +3 से करने का प्रयास कर रहे हैं। आइए यह भी मान लें कि इस उदाहरण के लिए आपके पास तालिका 1 और तालिका 2 दोनों तालिकाओं में 1 जून - 10 जून, 2016 के रूप में दर्शाई गई तालिका में केवल 10 दिन हैं।

फिर, यह एक धारणा है कि प्रत्येक तालिका में सभी 10 तिथियां हैं, केवल सरल उद्देश्यों के लिए कि इतने सारे रिकॉर्ड क्यों हैं। तो, 1 जून 2016 की तालिका 1 तिथि के लिए, यह तालिका 2 (tb21 संस्करण) के साथ योग्य होगी और दो रिकॉर्ड लौटाएगी। एक 1 जून के लिए और दूसरा 2 जून के लिए। तो अब आपके परिणाम में दो रिकॉर्ड हैं। अब, आप इसे फिर से बाएं-तालिका 2 (tb22 संस्करण) में शामिल करें। इस बार आप 2 और 3 दिनों की तलाश कर रहे हैं, जिनमें से आपके पास तालिका में 3 और 4 जून हैं। तो आपको कार्टेशियन परिणाम मिल रहा है। तो, तालिका 1 में 1 जून के रिकॉर्ड के लिए, अब आपके पास निम्नानुसार 4 रिकॉर्ड हैं।

T1Year  T1Month  T1Day  T21Day T22Day
2016    6        1      1      3
2016    6        1      1      4
2016    6        1      2      3
2016    6        1      2      4

अब, मान लें कि आपकी तालिका 2 में 2 जून को 3 प्रविष्टियाँ हैं और 3 जून को 3 प्रविष्टियाँ हैं और आपका डेटा सुपर ब्लोट में जा रहा है। यही कारण है कि आप जो करने का प्रयास कर रहे हैं उस पर आपको अधिक स्पष्टीकरण देने की आवश्यकता है।

इसलिए, आप जो खोज रहे हैं उस पर सही संदर्भ न रखते हुए, इस तथ्य को अनदेखा करें कि यह आपके सूचकांक का पूरी तरह से उपयोग नहीं कर रहा है। आपके पास दिन की तुलना के आधार पर एक OR है। इसे अभी भी किसी भी तरह क्वेरी के लिए उपयोग करना चाहिए।




  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. माइस्क्ल TIME_WAIT; बहुत अधिक कनेक्शन समस्या

  3. एसक्यूएल स्टेटमेंट पर डायनेमिक टेबल का नाम

  4. क्या MySQL पिवट टेबल में ऑटो-इंक्रिमेंटिंग प्राथमिक कुंजी रखने का कोई लाभ है?

  5. jQuery कनेक्टेड सॉर्ट करने योग्य सूचियाँ, ऑर्डर को MySQL में सहेजें