2010-03-24 16 views
10

क्या कोई जानता है कि कुछ प्रदर्शन सुधारों में किसी INSERT क्वेरी परिणामों से फ़ील्ड नामों को हटा रहा है?SQL INSERT प्रदर्शन फ़ील्ड नामों को छोड़कर?

मेरा मतलब यह है:

INSERT INTO table1 VALUES (value1, value2, ...) 

के लिए डीबी के बजाय पूरा किया जा करने के लिए ऐसा करने के लिए तेजी से:

INSERT INTO table1 (field1, field2, ...) VALUES (value1, value2, ...) 

?

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

मैं आमतौर पर डीएसएस के रूप में MySQL और PostgreSQL का उपयोग कर रहा हूं।

उत्तर

12

नहीं, असल में इसके विपरीत! कम से कम माइक्रोसॉफ्ट एसक्यूएल सर्वर के लिए - आपने यह निर्दिष्ट नहीं किया कि आप किस डेटाबेस के बारे में बात कर रहे हैं .....

यदि आप फ़ील्ड निर्दिष्ट नहीं करते हैं, या तो किसी SELECT या INSERT में, तो SQL सर्वर की क्वेरी प्रोसेसर को पहले यह पता लगाने के लिए सिस्टम कैटलॉग का निरीक्षण करना चाहिए कि वास्तव में कौन से फ़ील्ड उपलब्ध हैं।

तो मैं हमेशा आपके इच्छित फ़ील्ड को स्पष्ट रूप से सूचीबद्ध करने की अनुशंसा करता हूं - INSERT पर जितना अधिक चयन करता है।

+2

+1 मैं सिद्धांत रूप में सहमति व्यक्त करते हैं बदल गया है टूट जाएगा, लेकिन सोचा - ऐसा नहीं होगा कॉलम परिभाषाओं/चूक के लिए बाद के मामले पर स्कीमा से पूछना होगा? – Andy

+0

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

+1

+1 और पठनीयता भी 10 कॉलम के साथ एक सम्मिलित क्वेरी के लिए वास्तव में खराब होगी यदि कोई नहीं करता है कॉलम नाम निर्दिष्ट करें। –

1

नहीं, यह तेज़ नहीं है। डेटाबेस को यह जांचना है कि कौन से फ़ील्ड टेबल में हैं और वैसे भी मानों के खिलाफ मेल खाते हैं।

आपको कोड को और अधिक मजबूत बनाने के लिए क्वेरी में फ़ील्ड निर्दिष्ट करना चाहिए। यदि कोई तालिका में फ़ील्ड के क्रम को बदलता है, तो यदि आप फ़ील्ड निर्दिष्ट नहीं करते हैं तो यह काम करना बंद कर देता है (या गलत फ़ील्ड में डेटा लिखता है)।

1

मुझे फ़ील्ड नामों को छोड़कर किसी भी प्रदर्शन में सुधार के बारे में पता नहीं है, लेकिन मैं इसके खिलाफ परीक्षण/एकमात्र आवेषण के अलावा किसी अन्य चीज़ के लिए सलाह दूंगा।

पठनीयता भुगतना होगा (आप तालिका जांच करने के लिए क्या डाला जा रहा है, जहां है) और अपने कोड है, तो तालिका स्कीमा

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