অভ্যন্তরীণ যোগদানের জন্য আমি সত্যই কোনও পার্থক্য লক্ষ্য করিনি (তবে সমস্ত পারফরম্যান্স টিউন করার সাথে সাথে আপনার অবস্থার অধীনে আপনার ডাটাবেসের বিরুদ্ধে পরীক্ষা করা দরকার)।
তবে আপনি যেখানে শর্তটি রেখেছেন তা যদি আপনি বাম বা ডান সাথে যোগ দিয়ে থাকেন তবে একটি বিশাল পার্থক্য। উদাহরণস্বরূপ এই দুটি প্রশ্ন বিবেচনা করুন:
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 ই মে, ২০০৯ এর পরে তারিখের পরে অর্ডার দিয়েছে যাতে বাম জোড়াকে অভ্যন্তরীণ যোগে রূপান্তরিত করে। দ্বিতীয়টি সেই রেকর্ডগুলি এবং কোনও অর্ডার ছাড়া কোনও গ্রাহককে দেবে। আপনি শর্তটি কোথায় রেখেছেন তার উপর নির্ভর করে ফলাফল সেটগুলি খুব আলাদা। (উদাহরণস্বরূপ কেবলমাত্র উদাহরণস্বরূপ, * নির্বাচন করুন * আপনার অবশ্যই উত্পাদন কোডে অবশ্যই ব্যবহার করা উচিত নয় this) এর ব্যতিক্রমটি যখন আপনি কেবল একটি টেবিলে কেবল রেকর্ড দেখতে চান তবে অন্যটি নয়। তারপরে আপনি শর্তটির জন্য যেখানে ক্লজটি ব্যবহার করবেন তা যোগ না দিয়ে।
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderID is null