Sql Server, Oracle, और MySQL में फैले कुछ डेटाबेस पर कॉलम ऑर्डर का बड़ा प्रदर्शन प्रभाव पड़ा। इस पोस्ट में अच्छे नियम हैं। :
- प्राथमिक कुंजी कॉलम पहले
- विदेशी कुंजी कॉलम आगे।
- अगले कॉलम अक्सर खोजे जाते हैं
- अक्सर बाद में अपडेट किए गए कॉलम
- अशक्त स्तंभ अंतिम।
- अक्सर उपयोग किए जाने वाले अशक्त स्तंभों के बाद कम से कम उपयोग किए जाने वाले अशक्त स्तंभ
प्रदर्शन में अंतर के लिए एक उदाहरण इंडेक्स लुकअप है। डेटाबेस इंजन इंडेक्स में कुछ शर्तों के आधार पर एक पंक्ति ढूंढता है, और एक पंक्ति पता वापस प्राप्त करता है। अब कहें कि आप SomeValue की तलाश में हैं, और यह इस तालिका में है:
SomeId int,
SomeString varchar(100),
SomeValue int
इंजन को अनुमान लगाना होता है कि कुछ वैल्यू कहां से शुरू होती है, क्योंकि कुछ स्ट्रिंग की अज्ञात लंबाई होती है। हालांकि, अगर आप ऑर्डर को इसमें बदलते हैं:
SomeId int,
SomeValue int,
SomeString varchar(100)
अब इंजन को पता है कि पंक्ति की शुरुआत के बाद कुछ वैल्यू को 4 बाइट्स मिल सकते हैं। इसलिए स्तंभ क्रम का प्रदर्शन पर काफी प्रभाव पड़ सकता है।
संपादित करें:एसक्यूएल सर्वर 2005 पंक्ति की शुरुआत में निश्चित-लंबाई वाले फ़ील्ड संग्रहीत करता है। और प्रत्येक पंक्ति में एक वर्चर की शुरुआत का संदर्भ होता है। यह उस प्रभाव को पूरी तरह से नकार देता है जिसे मैंने ऊपर सूचीबद्ध किया है। इसलिए हाल के डेटाबेस के लिए, स्तंभ क्रम का अब कोई प्रभाव नहीं पड़ता है।