2012-07-18 19 views
14

में शामिल होने मैं SQL कथन में शामिल होने का चयन दो है:अंतर में शामिल होने और जहां चयन में SQL विवरण

select a.id from table_a as a, table_b as b where a.id=b.id; 
select a.id from table_a as a inner join table_b as b on a.id=b.id; 

जाहिर है, वे परिणाम में एक ही हैं। लेकिन प्रदर्शन, पोर्टेबिलिटी जैसे उनके बीच कोई अंतर है।

+0

यदि आप कई डीबी सिस्टम, या SQL सर्वर, माइक्रोसॉफ्ट उत्पाद में लागू भाषा के रूप में एसक्यूएल का जिक्र कर रहे हैं तो यह आपके प्रश्न से स्पष्ट नहीं है। –

+0

अधिकांश डीबीआरएमएस, जैसे कि MySQL, SQL सर्वर, ओरेकल, डीबी 2 –

उत्तर

16

एक अंतर यह है कि पहला विकल्प उस खंड में शामिल स्थिति को व्यक्त करके इरादे को छुपाता है।

दूसरा विकल्प, जहां जॉइन हालत लिखी गई है, उपयोगकर्ता क्वेरी को पढ़ने के लिए अधिक स्पष्ट है। यह क्वेरी का सटीक इरादा दिखाता है।

जहां तक ​​प्रदर्शन या कोई अन्य अंतर है, वहां कोई भी नहीं होना चाहिए। दोनों प्रश्नों को सटीक उसी परिणाम को वापस करना चाहिए और अधिकांश आरडीबीएमएस के तहत इसे निष्पादित करना चाहिए।

0

दोनों मानक एसक्यूएल हैं। विभिन्न डीबी सिस्टम उन्हें अलग-अलग अनुकूलित कर सकते हैं, लेकिन क्योंकि वे बहुत आसान हैं, अगर वे ऐसा करते हैं तो मैं थोड़ा आश्चर्यचकित हूं। लेकिन यह एसक्यूएल की प्रकृति है: यह घोषणात्मक है, जो कार्यान्वयन को आपकी क्वेरी को निष्पादित करने में कितना छूट देता है। इस बात की कोई गारंटी नहीं है कि ये वही प्रदर्शन करते हैं, या यदि वे अलग हैं, जो तेज़ है।

+0

के लिए आपने कहा कि कोई गारंटी नहीं है कि ये वही हैं। क्या आप एक उदाहरण दे सकते हैं? –

+0

क्षमा करें, मेरा मतलब था, "कोई गारंटी नहीं है कि ये वही प्रदर्शन करते हैं," मैंने अपना जवाब तय कर दिया है। –

0

वे SQL सर्वर में बिल्कुल समान हैं। कोई प्रदर्शन अंतर नहीं है।

3

आंतरिक शामिल वाक्यविन्यास को 1 99 0 के दशक में कभी-कभी एसक्यूएल में जोड़ा गया था। यह संभव है, लेकिन संभावना नहीं है कि ऑप्टिमाइज़र पुराने सिंटैक्स की तुलना में इसके साथ बेहतर कर सकता है जो कि स्थिति में शामिल होने के लिए कहां इस्तेमाल करता है।

वे दोनों अब बहुत पोर्टेबल होना चाहिए क्योंकि चीजें अब हैं।

आंतरिक शामिल वाक्यविन्यास बेहतर है क्योंकि पाठक पर यह आसान है, क्योंकि अन्य ने पहले से ही टिप्पणी की है।

संबंधित मुद्दे