2010-07-27 8 views
5

पर शैली/प्रारूप का प्रभाव संस्करण को अनदेखा कर रहा है, SQL कोड स्वरूपण के लिए सर्वोत्तम प्रथाएं क्या हैं? प्रश्न -एसक्यूएल

select col from a inner join (b inner join c on b.id=c.id) on a.id = b.id 

मैं अगर कोई अंतर नहीं है पता करने के लिए करना चाहते हैं:

मैं इस तरह से पसंद करते हैं (विधि ए):

select col from a inner join b on a.id = b.id inner join c on b.id = c.id 

एक सहयोगी एक और (विधि बी) पसंद करते हैं ऑप्टिमाइज़र दोनों के लिए एक ही निष्पादन योजना उत्पन्न करता प्रतीत होता है। तो शायद यह सिर्फ पठनीयता है?

यह पहली बार है जब मैंने विधि बी का उपयोग करके एसक्यूएल लिखा है, क्या कोई और इस तरह एसक्यूएल लिखता है? व्यक्तिगत रूप से मुझे विधि बी को पढ़ने में वाकई मुश्किल लगता है।

संपादित करें: कृपया ध्यान दें कि कोड एक पंक्ति पर है और ऊपरी मामले में दोनों इस प्रश्न के उद्देश्य के लिए अधिक तुलनीय बनाने के लिए है।

+1

पहले से ही पर्याप्त उत्तर दिए गए हैं (विधि ए अधिकतर और अधिक आसानी से समझा जाता है), लेकिन इसके अतिरिक्त SQLServerCentral.com पर यह प्रश्न बताता है कि "बी" विधि वास्तविक "स्टंपर्स" कैसे हो सकती है: http : //www.sqlservercentral.com/questions/T-SQL/77296/ 65% लोगों (आमतौर पर एसक्यूएल पेशेवर) ने इस प्रश्न का उत्तर दिया यह गलत हो गया। – Tao

उत्तर

1

मुझे लगता है कि ए अधिक पठनीय है, और उस शैली का सबसे अधिक नमूना कोड उस शैली का उपयोग करता है। दोनों समान रूप से विश्लेषण करते हैं और एक ही क्वेरी योजना का उत्पाद करते हैं, इसलिए जहां तक ​​SQL सर्वर का संबंध है, इसमें कोई अंतर नहीं है।

पठनीयता के लिए मैं सामान्य रूप से भी अपरकेस कीवर्ड और इंडेंट:

SELECT col 
FROM a 
    INNER JOIN b 
    ON a.id = b.id 
    INNER JOIN c 
    ON b.id = c.id 
+0

मैं इसे बिल्कुल वैसे ही शैली देता हूं। बस उस उदाहरण में नहीं था। –

1

विधि बी उप-चयन सिंटैक्स है, लेकिन इसे विधि ए के समान तरीके से विश्लेषित किया गया है। इसका उपयोग करने में कोई हानि नहीं है। मैं व्यक्तिगत रूप से विधि ए भी पसंद करता हूं, क्योंकि इसे एक लाइनर फैशन में पढ़ा जा सकता है।

1

मेरे निजी पसंद

SELECT col1, col2, col3, 
     col4, col5 
FROM a 
    INNER JOIN b ON a.id = b.id 
    INNER JOIN c ON b.id = c.id 
WHERE a.col1 = 1 

मुझे लगता है कि स्थिरता की कुंजी है है, मैं पठनीयता के लिए अपने सहयोगियों के ऊपर अपना रास्ता पसंद करते हैं।

+0

मैं इस तरह से भी कोड लिखना पसंद करता हूं, जब तक कि बहुत सी स्थितियों में शामिल न हो, तब मैंने अगली पंक्ति पर .... डाल दिया। –

+0

मैं वही करता हूं अगर यह थोड़ा बड़ा भीड़ दिखने लगता है। मैं एसक्यूएल कीवर्ड के लिए ऊपरी मामला भी पसंद करता हूं, केवल कुछ ही कीवर्ड हैं और यह उन्हें कॉलम/टेबल नामों से अलग करने में मदद करता है। आईएमओ :) –