我的SQL Server数据库有许多表,其中使用了各种数据类型。当前设计的列标准数据类型长度为ex:NVARCHAR
,如200,1000或MAX(这是我们采用的标准),具体取决于我保存的数据类型,我相应地使用数据类型。
对于NAME
列,我认为将其设为200/1000是没有意义的,忘记MAX(我不是说我们这样做了)。那么,如果你知道它可以占用不超过75个字符,那么制作200/1000字段是否可以?它对查询性能有什么影响吗?这种方法还有哪些其他问题/好处。
哪种方式更好,使用标准数据类型长度而不管存储的数据是什么,或者使用列的特定数据类型长度是否合适?
高度赞赏这方面的任何帮助
感谢!!!
答案 0 :(得分:1)
一般情况下,我倾向于尽可能使用较小的类型,但并不总是可行或方便,并且每种选择都有肯定的权衡。例如,200似乎不是一个不同的数量,但如果数据保证限制在75个字符,较小的类型可能是更好的选择。我会分析使用较小尺寸的优缺点:
当然,你必须评估你的确切情况,是否值得改变。从记忆和个人经验来看,我必须平衡所有这些事情。
答案 1 :(得分:0)
我总是尽量保持数据类型和大小的真实性。我认为200太多了,为什么Nvarchar?我认为你认为Varchar(50)或75就足够了。如果要创建类,它确实会对应用程序产生影响,因为应用程序必须保留字节大小,导致应用程序需要更多内存。这只是个人观点,我不是专家。
答案 2 :(得分:0)
不要使用MAX。如果使用nvarchar(max)或varchar(max),SQL Server会将其视为大文本值,并且处理时间会更长。
回答你的问题。最好使用varchar(N),N应该是您期望存储的最大数字。没有必要使N 1000,甚至200.99.999%的名称将在此之下。话虽如此,通过将其设为200,查询性能会有所不同,但它可以忽略不计。
就存储大小而言,nvarchar每长度为2个字节,varchar为每个长度1个字节。
如果您希望(unicode)中的名字使用不同的字符/语言,请使用nvarchar(N)。