Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल जॉइन बनाम प्रदर्शन में?

सामान्यतया, 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत कार्यविधि को निष्पादित करते समय, CommandType.StoreedProcedure बनाम CommandType.Text का उपयोग करने का क्या लाभ है?

  2. SQL सर्वर संग्रहीत कार्यविधि से API को कॉल करना

  3. SQL सर्वर:sp_who2 का आउटपुट फ़िल्टर करें

  4. SQL सर्वर पर चल रहे प्रश्नों की सूची बनाएं

  5. SQL सर्वर में एक स्ट्रिंग के भीतर एक स्ट्रिंग कैसे खोजें?