आंतरिक जोड़ के लिए मैंने वास्तव में अंतर नहीं देखा है (लेकिन जैसा कि सभी प्रदर्शन ट्यूनिंग के साथ है, आपको अपनी शर्तों के तहत अपने डेटाबेस के खिलाफ जांच करने की आवश्यकता है)।
हालाँकि, जहाँ आप शर्त रखते हैं, अगर आप बाएँ या दाएँ जोड़ का उपयोग कर रहे हैं, तो इससे बहुत फर्क पड़ता है। उदाहरण के लिए इन दो प्रश्नों पर विचार करें:
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderDate >'20090515'
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
AND ORD.OrderDate >'20090515'
पहला आपको केवल उन्हीं अभिलेखों को देगा जिनके पास 15 मई, 2009 की तुलना में बाद में दिनांकित आदेश है, इस प्रकार बाएं जोड़ को एक आंतरिक जोड़ में परिवर्तित किया गया है। दूसरा उन अभिलेखों को कोई भी ग्राहक देगा, जिनके पास कोई आदेश नहीं होगा। आप जहां शर्त रखते हैं, उसके आधार पर सेट किए गए परिणाम बहुत भिन्न होते हैं। (चयन करें * यदि केवल उदाहरण के उद्देश्यों के लिए, आपको उत्पादन कोड में पाठ्यक्रम का उपयोग नहीं करना चाहिए।) इसका अपवाद तब है जब आप केवल एक तालिका में रिकॉर्ड देखना चाहते हैं, लेकिन दूसरा नहीं। फिर आप इस शर्त का उपयोग करते हैं कि शर्त में शामिल होने के लिए खंड कहां है।
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderID is null