2011-03-18 12 views
6

मेरी कंपनी में, हमारे पास विभिन्न तालिकाओं के साथ एक विरासत डेटाबेस है और इसलिए कई, कई फ़ील्ड हैं।क्या डेटाबेस (अधिकतम) फ़ील्ड की लंबाई प्रदर्शन को प्रभावित करती है?

बहुत से फ़ील्ड में बड़ी सीमाएं होती हैं (उदा: NVARCHAR(MAX)) जो कभी नहीं पहुंचती हैं।

मनमाने ढंग से फ़ील्ड को अपनी अधिकतम चौड़ाई या 2 से 3 गुना बड़ा बनाता है जो आम तौर पर नकारात्मक रूप से प्रदर्शन को प्रभावित करता है?

फ़ील्ड की लंबाई के साथ प्रदर्शन को संतुलित कैसे किया जाना चाहिए? क्या कोई संतुलन है?

+0

बहुत कुछ नहीं - लेकिन आप 'VARCHAR' प्रकार के कॉलम को इंडेक्स नहीं कर सकते हैं (MAX) '- यह एक बड़ी कमी हो सकती है ... (किसी भी इंडेक्स में अधिकतम 900 बाइट्स हो सकते हैं - एक (MAX) कॉलम * 2 जीबी तक हो सकता है - तो यह किसी भी इंडेक्स में हिस्सा नहीं हो सकता है) –

+1

संबंधित/डुप्लिकेट http://stackoverflow.com/questions/4378795/sql-performance-is-there-any-performance-hit-using-nvarcharmax-instead-of-nvar –

+0

संभव [वर्चर (अधिकतम) हर जगह का डुप्लिकेट?] (http://stackoverflow.com/questions/2091284/varcharmax-everywhere) – Justin

उत्तर

7
वहाँ

इस सवाल का दो भागों है:

VARCHAR चोट प्रदर्शन से अधिक NVARCHAR का उपयोग कर रहा है? हां, यूनिकोड फ़ील्ड में डेटा भंडारण भंडारण आवश्यकताओं को दोगुना करता है। उन फ़ील्ड में संग्रहीत आपका डेटा 2x आकार होना चाहिए (जब तक SQL Server 2008 R2 बाहर नहीं आया, जिसमें unicode compression शामिल है। आपकी तालिका स्कैन में दो गुना अधिक समय लगेगा और बफर कैश में स्मृति में केवल आधा डेटा संग्रहीत किया जा सकता है

MAX चोट का प्रदर्शन कर रहा है? सीधे नहीं, लेकिन जब आप VARCHAR (MAX), NVARCHAR (MAX), और उन प्रकार के फ़ील्ड्स का उपयोग करते हैं, और यदि आपको तालिका को अनुक्रमणित करने की आवश्यकता है, तो आप सक्षम नहीं होंगे SQL सर्वर 2005/2008/R2 में उन इंडेक्स को ऑनलाइन पुनर्निर्माण करें। (डेनाली MAX फ़ील्ड के साथ तालिकाओं के चारों ओर कुछ सुधार लाती है, इसलिए कुछ इंडेक्स को ऑनलाइन पुनर्निर्मित किया जा सकता है।)

+0

आप 'VARCHAR (MAX)' और संबंधित फ़ील्ड को सूचीबद्ध नहीं कर सकते हैं। – Justin

+1

क्षमा करें, मुझे और अधिक विशिष्ट होना चाहिए: यदि आपको उन तालिकाओं को अनुक्रमणित करने की आवश्यकता है, तो आप उन इंडेक्स को ऑनलाइन पुनर्निर्माण करने में सक्षम नहीं होंगे। उन क्षेत्रों के साथ एक तालिका SQL सर्वर 2005/2008/2008R2 में ऑनलाइन पुनर्निर्मित नहीं की जा सकती है। –

2

हां, क्वेरी ऑप्टिमाइज़र अनुमान लगा सकता है कि पृष्ठ में कितनी पंक्तियां फिट होती हैं, यदि आपके पास varchar फ़ील्ड आवश्यक हैं जो आवश्यक से बड़े हैं, तो SQL सर्वर आंतरिक रूप से पंक्तियों की गलत संख्या का अनुमान लगा सकता है।

+0

क्वेरी ऑप्टिमाइज़र का अनुमान लगाने के लिए 'कितनी विस्तृत पंक्ति है' का अनुमान लगाने के लिए 'कितनी पंक्तियां फिट हो सकती हैं' पृष्ठ'। –

-2

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

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