【问题标题】:Database column data type数据库列数据类型
【发布时间】:2014-09-19 00:12:44
【问题描述】:

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

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

哪种方式更好,无论存储的数据如何,都使用标准数据类型长度,还是对列使用特定的数据类型长度更好?

非常感谢这方面的任何帮助

谢谢!!!

【问题讨论】:

    标签: sql .net sql-server database


    【解决方案1】:

    一般情况下,我倾向于尽可能使用较小的类型,但这并不总是可行或方便的,而且每个选择肯定都需要权衡取舍。一方面,200 似乎不是一个不同的数量,但如果数据保证限制为 75 个字符,则较小的类型可能是更好的选择。我会分析使用较小尺寸的利弊:

    优点

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

    缺点

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

    当然,您必须评估您的确切情况以及是否值得更改。根据记忆和个人经验,我必须平衡所有这些事情。

    【讨论】:

      【解决方案2】:

      我总是尽量保持数据类型和大小切合实际。我确实认为 200 太多了,为什么是 Nvarchar?我认为您认为的 Varchar(50) 或 75 就足够了。如果要创建类,它确实会对应用程序产生影响,因为应用程序必须保留字节大小,从而导致应用程序需要更多内存。这只是个人意见,我不是专家。

      【讨论】:

      • NVARCHAR 如果您想提供完整的 unicode 支持,这很重要。使用VARCHAR,您只能获得当前的 ANSI 代码页,这可能会导致某些字符出现问题。这实际上取决于预期的使用情况。
      【解决方案3】:

      不要使用 MAX。如果使用 nvarchar(max) 或 varchar(max),SQL Server 会将其视为大文本值,处理时间会更长。

      回答你的问题。最好使用 varchar(N),N 应该是您期望存储的最大数字。没有必要将 N 设为 1000,甚至 200。99.999% 的名称将在此之下。话虽如此,将其设为 200 会在查询性能上有所不同,但可以忽略不计。

      就存储大小而言,nvarchar 是每长度 2 个字节,而 varchar 是每长度 1 个字节。

      如果您希望使用(unicode)不同字符/语言的名称,请使用 nvarchar(N)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-07
        • 2019-04-29
        • 1970-01-01
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多