यदि हम मानते हैं कि आप INNER JOIN
इसके बजाय उपयोग करते हैं LEFT JOIN
(जो आपके इरादे से प्रतीत होता है), ये दोनों प्रश्न कार्यात्मक रूप से समतुल्य हैं। क्वेरी ऑप्टिमाइज़र आपके WHERE
क्लॉज़ और आपके FROM
क्लॉज़ में मानदंड की समीक्षा और मूल्यांकन करेंगे और सबसे कुशल निष्पादन योजना तक पहुँचने के लिए क्वेरी प्लान बनाते समय इन सभी कारकों पर विचार करेंगे। यदि हम EXPLAIN
दोनों कथनों पर करते हैं, तो हमें एक ही परिणाम मिलता है:
क्वेरी 1 :
EXPLAIN
SELECT
tableA.ColA
,tableA.ColB
,tableA.ColC
,tableA.ColD
,tableA.ColE
FROM tableA
JOIN tableB ON tableA.ColA=tableB.ColA
WHERE
tableA.ColB=tableB.ColB
AND tableA.ColC=tableB.ColC
AND tableA.ColD=tableB.ColD
AND tableA.ColE=tableB.ColE
[परिणाम] :
| ID | SELECT_TYPE | TABLE | TYPE | POSSIBLE_KEYS | KEY | KEY_LEN | REF | ROWS | EXTRA |
------------------------------------------------------------------------------------------------------------------------
| 1 | SIMPLE | tableA | ALL | (null) | (null) | (null) | (null) | 1 | |
| 1 | SIMPLE | tableB | ALL | (null) | (null) | (null) | (null) | 1 | Using where; Using join buffer |
क्वेरी 2 :
EXPLAIN
SELECT
tableA.ColA
,tableA.ColB
,tableA.ColC
,tableA.ColD
,tableA.ColE
FROM tableA
JOIN tableB ON tableA.ColA=tableB.ColA
AND tableA.ColB=tableB.ColB
AND tableA.ColC=tableB.ColC
AND tableA.ColD=tableB.ColD
WHERE
tableA.ColE=tableB.ColE
[परिणाम] :
| ID | SELECT_TYPE | TABLE | TYPE | POSSIBLE_KEYS | KEY | KEY_LEN | REF | ROWS | EXTRA |
------------------------------------------------------------------------------------------------------------------------
| 1 | SIMPLE | tableA | ALL | (null) | (null) | (null) | (null) | 1 | |
| 1 | SIMPLE | tableB | ALL | (null) | (null) | (null) | (null) | 1 | Using where; Using join buffer |
आप निम्न लिंक के साथ पूर्ण विवरण की समीक्षा कर सकते हैं। मैंने एक SQL 2008 उदाहरण भी बनाया ताकि आप तुलना कर सकें कि दो इंजन कैसे काम करते हैं (जो समान है):
MySQL क्वेरी उदाहरण
SQL 2008 क्वेरी उदाहरण (सुनिश्चित करें कि आप दोनों परिणामों के लिए 'निष्पादन योजना देखें')
INNER JOIN
, लेकिन इसके साथLEFT JOIN
विभिन्न परिणाम लौटाएंगे। मूल रूप से, आपनेWHERE
अपनी दूसरी क्वेरी पर जो शर्तें जोड़ीJOIN
INNER JOIN