数据库列数据类型

时间:2014-09-19 00:12:44

标签: sql .net sql-server database

我的SQL Server数据库有许多表,其中使用了各种数据类型。当前设计的列标准数据类型长度为ex:NVARCHAR,如200,1000或MAX(这是我们采用的标准),具体取决于我保存的数据类型,我相应地使用数据类型。

对于NAME列,我认为将其设为200/1000是没有意义的,忘记MAX(我不是说我们这样做了)。那么,如果你知道它可以占用不超过75个字符,那么制作200/1000字段是否可以?它对查询性能有什么影响吗?这种方法还有哪些其他问题/好处。

哪种方式更好,使用标准数据类型长度而不管存储的数据是什么,或者使用列的特定数据类型长度是否合适?

高度赞赏这方面的任何帮助

感谢!!!

3 个答案:

答案 0 :(得分:1)

一般情况下,我倾向于尽可能使用较小的类型,但并不总是可行或方便,并且每种选择都有肯定的权衡。例如,200似乎不是一个不同的数量,但如果数据保证限制在75个字符,较小的类型可能是更好的选择。我会分析使用较小尺寸的优缺点:

赞成

  • 帮助防止用户将较大的文本放入控件中。
  • 如果由于长文本而出现错误,也可以防止可能的恶意用户。
  • 如果使用了完整的200个字符,客户端应用程序必须准备好处理更长的字符串。
  • 该列的索引可能更小,这有助于提高性能。

缺点

  • 不是“面向未来”。有一天,名称可能会超过75个字符,从而迫使数据库和前端应用程序进行更新。用户需求随时间而变化。
  • 用户必须优雅地回复用户输入较长文本,方法是不接受或通过显示消息等。
  • 如果您想要从其他系统导入数据,那些可能需要处理的文本较长。
  • 打破或改变公司标准(200/1000 / MAX)可能并不容易,特别是如果团队有很长时间跟踪它。

当然,你必须评估你的确切情况,是否值得改变。从记忆和个人经验来看,我必须平衡所有这些事情。

答案 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)。