हम वर्तमान में स्ट्रिंग को स्टोर करने के लिए डेटाबेस में पर्याप्त जगह नहीं होने पर किसी भी समस्या को रोकने के लिए विशिष्ट लंबाई निर्दिष्ट करने के बजाय हमारे स्ट्रिंग कॉलम को nvarchar(max)
पर सेट करने के लिए देख रहे हैं। मैं बस सोच रहा हूं कि यह एक अच्छी बात है या इससे कोई समस्या हो सकती है क्योंकि ऐसा करना ठीक था, तो की लंबाई nvarchar(max)
की बजाय निर्दिष्ट क्यों करें। हम varbinary(max)
का भी बहुत उपयोग करते हैं क्योंकि हम नहीं जानते कि हमें कितना द्विआधारी डेटा चाहिए, इसलिए मुझे यकीन नहीं है कि यह कितना प्रभाव है या तो यह बताएं कि हमारे आवेषण उतना तेज़ नहीं हैं जितना मुझे लगता है कि वे होना चाहिए। यह एक उदाहरण तालिका है:SqlServer और nvarchar (अधिकतम)
CREATE TABLE [dbo].[SAMPLETABLE] (
[ID] [uniqueidentifier] NOT NULL,
[FIELD1] [int] NOT NULL,
[FIELD2] [nvarchar] (2000) NULL,
[FIELD3] [nvarchar] (max) NULL,
[FIELD4] [uniqueidentifier] NULL,
[FIELD5] [int] NULL,
[FIELD6] [nvarchar] (2000) NULL,
[FIELD7] [varbinary] (max) NULL,
[FIELD8] [varbinary] (max) NULL,
[FIELD9] [varbinary] (max) NULL,
[FIELD10] [uniqueidentifier] NULL,
[FIELD11] [nvarchar] (2000) NULL,
[FIELD12] [varbinary] (max) NULL,
[FIELD13] [varbinary] (max) NULL,
[FIELD14] [bit] NULL,
[FIELD15] [uniqueidentifier] NULL,
[FIELD16] [varbinary] (max) NULL,
[FIELD17] [bit] NULL,
[FIELD18] [tinyint] NULL,
[FIELD19] [datetime] NULL,
[FIELD20] [nvarchar] (2000) NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]
GO
ऐसे ही एक टेबल डिजाइन और बदलते nvarchar(2000)
nvarchar(max)
लिए है कि चीजें किसी भी बदतर (या बेहतर) होगा यह देखते हुए? क्या इस तरह के डिजाइन पर sqlserver फहरा हुआ है?
आप किस प्रकार का डेटा संग्रहीत कर रहे हैं? केवल * समस्या * अनुक्रमण, खोज और बाधाओं का होगा। इससे बदलाव एक अच्छा विचार नहीं है। – Matthew
** कृपया इसे मत करो! ** अगर मुझे ऐसी जगह पर किराए पर लिया गया था जिसमें उसकी सभी सारणीएं हैं, तो मैं दरवाजे से चिल्लाना चाहता हूं! फिर आप सभी nvarchar (अधिकतम) कॉलम, यक के शीर्ष पर क्लस्टरर्ड पहचानकर्ता पीके में जोड़ते हैं। आप अपने डेटा को इंडेक्स करने की क्षमता को मार रहे हैं। किसी दिन जल्द ही, आप एक सवाल पूछेंगे कि आपकी क्वेरी इतनी धीमी गति से क्यों चलती है, और आप इसे तेज करने के लिए बहुत कुछ नहीं कर पाएंगे। दिन में, सभी मुख्य/लोकप्रिय भाषाओं को दृढ़ता से टाइप किया गया था, लेकिन अब इतना नहीं। यदि आप किसी डेटाबेस में "उस" क्रच का उपयोग करने का प्रयास करते हैं तो आप समस्याओं में भाग लेंगे। –
@ केएम अगर मैं कर सकता हूं तो मैं आपकी टिप्पणी को दस लाख बार बढ़ा दूंगा, यह भयानक डेटाबेस डिज़ाइन है। – HLGEM