2011-09-13 19 views
5

करने की तुलना में दक्षता में सुधार करता है यह प्रश्न अभी मेरे दिमाग में आया है, और मैं इसका उत्तर देने की स्थिति में नहीं हूं।एसक्यूएल कथन से विशिष्ट मानों का चयन करना "चयन *"

मान लें कि आप किसी वेबसाइट के लिए एक समाचार पृष्ठ विकसित कर रहे हैं। आप अपनी तालिका में निम्नलिखित क्षेत्रों होगा:

आईडी, शीर्षक, विषय, सामग्री, समय, लेखक, कीवर्ड

वास्तविक पृष्ठ पर कि उपयोगकर्ता देखेंगे, आप केवल कर सकते हैं निम्नलिखित प्रदर्शित:

शीर्षक, सामग्री, कीवर्ड

अब, जब आप SQL विवरण लिखने के लिए जाना है, यह बेहतर होगा इस रूप में यह लिखने के लिए:

SELECT Title, Content, Keywords FROM newstable; 

या इस रूप में:

SELECT * FROM newstable; 

मुझे हमेशा यही लगता है कि पूर्व उदाहरण का उपयोग कहीं अधिक कुशल और प्रयोग करने में जल्दी होगा। हालांकि, अब मैं सोच रहा हूं कि यह सभी कथन का चयन करने के लिए तेज़ और आसान हो सकता है।

क्या कोई रास्ता सही है, या क्या इससे वाकई कोई फर्क पड़ता है कि वे कैसे लिखे गए हैं?

उत्तर

13

हां, यह प्रदर्शन और अन्य कारणों के लिए महत्वपूर्ण है।

  • जब आप केवल कॉलम चुनते हैं तो आपको कम डेटा लौटाया जाना चाहिए। इसका मतलब यह है कि इसे हार्ड ड्राइव से खींचकर तार पर भेजना कम समय लगता है।
  • यह कॉलम आप चयन पूरी तरह से संतुष्ट एक covering index, का उपयोग कर जो क्वेरी कई गुना तेजी से
  • स्तंभ नाम निर्दिष्ट करके कर सकते हैं हो सकता है कि संभव है, आप कौन-सा डेटा आप अपने कोड में उपयोग कर रहे हैं का दस्तावेजीकरण कर रहे हैं। जब आप रखरखाव करने के लिए वापस आते हैं तो यह बहुत उपयोगी होता है।
  • * का उपयोग न करके, जब आप कॉलम का नाम बदलते या जोड़ते हैं तो आप अपने कोड को तोड़ने का मौका नहीं चलाते हैं। यदि आप कॉलम नामों के साथ स्पष्ट हैं, तो आपको अपने कोड के साथ नए परिणाम को अंधाधुंध रूप से पारित करने के बजाए एक क्वेरी निष्पादन-समय त्रुटि मिलेगी, जहां कौन जानता है-क्या होगा।
+0

क्या आप थोड़ा और समझा सकते हैं? –

+1

@remi कौन सा हिस्सा? – RedFilter

+0

मेरे पास था: चयन * के साथ, सर्वर को तालिका संरचना –

1

हाँ यह प्रदर्शन के लिए मायने रखता है। इसके अलावा पठनीयता बेहतर है, तो आप जानते हैं कि आप किस डेटा का अनुरोध कर रहे हैं।

आपको आवश्यक डेटा के कॉलम निर्दिष्ट करना चाहिए, अगर आपको उन सभी की आवश्यकता नहीं है तो उन्हें खींचें। आप केवल उस डेटा को वापस कर रहे हैं जो अनावश्यक

4

मेरा सुझाव है कि सर्वोत्तम अभ्यास कॉलम को स्पष्ट रूप से लिखना है।

सबसे पहले, यह आपके द्वारा मांगी जाने वाली डेटा की मात्रा को कम कर देगा।

अगला, यदि कोई डेटाबेस में कॉलम जोड़ता है तो यह संभावित प्रतिगमन कीड़े को हटा देता है।

भी, इसमें अधिक समय नहीं लगता है।

आखिरकार, आप निश्चित रूप से खंड द्वारा ऑर्डर करेंगे, यह केवल इंडेक्स से डेटा से संतुष्ट हो सकता है।

3

प्रदर्शन कारणों के अतिरिक्त (छोटे परिणाम सेट लौटाए गए और इंडेक्स-केवल पुनर्प्राप्ति की संभावना), आपके निर्दिष्ट कोड में निर्दिष्ट आदेश में नामित कॉलम की एक ज्ञात संख्या को वापस करने से कोड अधिक मजबूत हो जाता है - कोई मौका नहीं है तालिका की वर्तमान परिभाषा पर आकस्मिक रूप से किसी भी निर्भरता को कोड करेगा।

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