पुस्तक SQL Antipatterns अध्याय "अंतर्निहित कॉलम"।
सबसे विशिष्ट एक प्रश्न में fieldnames के लिए वाइल्डकार्ड के उपयोग किया जाता है जब एक तदर्थ क्वेरी लिखित रूप में गहराई में इस विषय को शामिल किया गया। यह तेजी से होता है '*' टाइप करने के लिए प्रत्येक फ़ील्ड नाम में टाइप करना है जिसे आप वापस करना चाहते हैं। प्रोग्रामर का समय काफी महंगा है, इसलिए यह समझ में आता है कि विज्ञापन-प्रसार क्वेरी चलाने पर थोड़ा प्रदर्शन लाभ के बारे में चिंता न करें, जहां आप ' नामों में टाइप करने में अधिक समय बर्बाद कर देगा।
हालांकि, आपको अभी भी डेटाबेस स्कीमा का कुछ ज्ञान होना चाहिए, क्योंकि बड़ी संख्या में पंक्तियों पर ब्लॉब कॉलम से मूल्यों की प्रतीक्षा करने से बहुत समय बर्बाद हो सकता है, खासकर अगर आप चाहते थे कि प्राथमिक कुंजी मूल्य ।
SELECT *
का उपयोग करके, आपको किसी विशेष क्वेरी पर अच्छा प्रदर्शन हो रहा है क्योंकि यह कुछ सौ बाइट्स का एक छोटा परिणाम सेट लौटा रहा है, हालांकि, कुछ अन्य फ़ंक्शन के लिए तालिका में कुछ ब्लॉब फ़ील्ड जोड़ें, और शायद परिणाम सेट लाखों बाइट्स में है, और अचानक आपकी क्वेरी धीमी है, भले ही आप जिस डेटा का उपयोग करते हैं वह बहुत छोटा है। इस समस्या से बचने के लिए, अपनी क्वेरी में कॉलम का नाम दें।
यदि आप SELECT *
का उपयोग कर रहे हैं तो आपके पास जोड़े जाने पर स्वचालित रूप से नए कॉलम के मान होंगे, फिर भी आप उपर्युक्त परिदृश्य से पीड़ित होंगे। यह एक व्यापार बंद है, जिसे आपको चुनना होगा।
जब तक आपके पास कोई कारण नहीं है, तो SELECT *
का उपयोग करना वैध है, अपवाद के साथ कि आलस्य वैध कारण नहीं है।
स्रोत
2012-02-01 17:56:33
यह किसी अन्य की तरह एक उपकरण है। यदि आप इसका कभी भी उपयोग नहीं करते हैं, तो इसके बारे में चिंता न करें। –
यदि आपकी स्कीमा बदलती है और आपका कोड डेटा सेट में कॉलम के क्रम पर निर्भर करता है तो यह आपको बाद में काट सकता है। इसके अलावा कुछ भी * तकनीकी रूप से * इसके साथ गलत नहीं है। –
@Marc B. मैं इसे हर समय उपयोग करता हूं और यही मुझे चिंता कर सकता है। – Matthew