सामान्यतया, IN
और JOIN
अलग-अलग क्वेरी हैं जो अलग-अलग परिणाम दे सकती हैं।
SELECT a.*
FROM a
JOIN b
ON a.col = b.col
. के समान नहीं है
SELECT a.*
FROM a
WHERE col IN
(
SELECT col
FROM b
)
, जब तक कि b.col
अद्वितीय है।
हालांकि, यह पहली क्वेरी का समानार्थी है:
SELECT a.*
FROM a
JOIN (
SELECT DISTINCT col
FROM b
)
ON b.col = a.col
अगर जॉइनिंग कॉलम UNIQUE
है और इस तरह से चिह्नित, ये दोनों प्रश्न SQL Server
में एक ही योजना उत्पन्न करते हैं ।
अगर ऐसा नहीं है, तो IN
JOIN
. से तेज है DISTINCT
. पर ।
प्रदर्शन विवरण के लिए मेरे ब्लॉग में यह लेख देखें:
IN
बनामJOIN
बनामEXISTS