যদি আমরা বিবেচনা করি যে আপনি 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 |
আপনি নিম্নলিখিত লিঙ্কগুলির সাথে পুরো বিশদটি পর্যালোচনা করতে পারেন। আমি একটি এসকিউএল ২০০৮ উদাহরণও তৈরি করেছি যাতে আপনি দুটি ইঞ্জিন কীভাবে কাজ করেন তা তুলনা করতে পারেন (যা একই)
মাইএসকিউএল ক্যোয়ারির উদাহরণ
এসকিউএল ২০০৮ ক্যোয়ারের উদাহরণ (নিশ্চিত করুন যে আপনি উভয় ফলাফলের জন্য 'এক্সিকিউশন প্ল্যান' দেখুন)
INNER JOINসাথেLEFT JOINবিভিন্ন ফলাফল ফিরে আসবে। মূলত,WHEREআপনার দ্বিতীয় ক্যোয়ারীতে আপনি যে শর্তগুলি যুক্ত করেছেন তা আপনাকে রূপান্তরিতJOINকরছেINNER JOIN