2009-02-25 8 views
5

पर स्याही बनाम जुड़ता है, क्या एक पूर्णांक मूल्य में शामिल होने के विरोध में एक char (या वर्चर) मान पर तालिका में शामिल होने के लिए एसक्यूएल में कोई प्रदर्शन दोष है?चार्स (या वर्कर्स)

उत्तर

2

वहाँ प्रदर्शन विचार के आकार से संबंधित हैं कॉलम में शामिल हों। एक पूर्णांक 4 बाइट चौड़ा है - इसलिए 4 बाइट्स से बड़े किसी भी चार मान के लिए अधिक डिस्क I/O, कैश स्पेस आदि की आवश्यकता होती है। जाहिर है, एक char (5) अधिक प्रभावित नहीं करेगा, लेकिन एक char (4000) असाधारण रूप से अपर्याप्त होगा । यदि आप यूनिकोड प्रकार का उपयोग करते हैं तो चार आकारों को दोहराएं।

आमतौर पर यह प्रश्न प्राकृतिक बनाम सरोगेट कुंजी के संदर्भ में आता है। उस तर्क में, डेटाटाइप का आकार एकमात्र कारक नहीं है - क्योंकि आप अक्सर प्राकृतिक (चार) कुंजी के साथ जुड़ने से बच सकते हैं।

बेशक, आपके आवेदन में कोई भी बाधा होने की संभावना नहीं है - इसलिए निर्दोषता (कम से कम इस क्षेत्र में) के साथ डिजाइन करें।

+0

यह कहने से पहले वॉल्यूम पर निर्भर करता है कि यह महत्वपूर्ण नहीं होगा। गोदाम में संग्रहीत डेटा की बड़ी मात्रा में प्रोसेस करते समय, CHAR (64) फ़ील्ड में शामिल होने से आईएनटी फ़ील्ड में शामिल होने से काफी कम कुशल होता है। – MatBailie

+0

हकीकत में, उस चार (64) में डोमेन डेटा का कुछ टुकड़ा होगा जो अद्वितीय (प्राकृतिक कुंजी) है। अक्सर, यदि आप पहले से ही प्राकृतिक कुंजी रखते हैं तो आप शामिल होने से बच सकते हैं - जो int से भी बेहतर है। लेकिन हां, यदि आप एक बड़े डेटा वेयरहाउस को डिजाइन कर रहे हैं, तो आप इन मामलों पर अपनी राय ले सकते हैं। –

1

कोई नहीं (ओरेकल में) नहीं है। क्या अंतर कर सकता है:
- यदि आपकी जॉइन-हालत में डेटाटाइप अलग हैं (निहित रूपांतरण में प्रदर्शन दंड हो सकता है)। तो एक चर में एक चार में शामिल होने से बुरा हो सकता है।
- यदि एक फ़ील्ड में एक अनुक्रमणिका है और दूसरा नहीं है।
- यदि एक कॉलम में डेटा दूसरे कॉलम की तुलना में काफी लंबा है।

0

नहीं है, जब तक डेटाटाइप्स टेबल कि आप में शामिल के बीच एक ही हैं आप ठीक

1

एक चार या varchar ASCII या यूनिकोड अपने चरित्र सेट पर निर्भर करता है के रूप में संग्रहीत किया जाएगा होना चाहिए। एक int कुछ पैक किए गए रूप के रूप में संग्रहीत किया जाएगा। यदि आप int फॉर्म में कोई संख्या लेते हैं तो यह वर्ण (स्ट्रिंग) फ़ॉर्म में समान संख्या से छोटा होगा। संख्यात्मक प्रकार के रूप में भंडारण हमेशा वर्णों के रूप में संग्रह करने से अधिक प्रदर्शनशील होगा।

4

एक चार या var char पर शामिल होने से आमतौर पर एक इंट पर जुड़ने के विरोध में ओवरहेड होता है। वहाँ दो कारकों मैं तुलना करते समय वर्ण के बारे में पता कर रहा हूँ कर रहे हैं:
- मिलान
के कारण रखा जाना है - और अधिक डेटा तुलना करने के लिए * है चार क्षेत्रों

* (प्रत्येक चरित्र का प्रतिनिधित्व करती है 8 बिट से, एक 10 चार मूल्य इस प्रकार 80 बिट लंबे, एक पूर्णांक के लिए 32 बिट) की तुलना में है

* (यह चरित्र प्रति 16 बिट NCHAR या NVARCHAR) का उपयोग करता है, तो

+0

मुझे पता था कि यह प्रश्न आपकी रुचि बढ़ाएगा :) –

+0

वह यह कहता है क्योंकि अगर मैं चरित्र क्षेत्रों में शामिल होता हूं तो मैं अपना शीर्ष उड़ाता हूं :) – MatBailie

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

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