【问题标题】:Adding a nvarchar(MAX) Column to my audit table在我的审计表中添加一个 nvarchar(MAX) 列
【发布时间】:2013-12-19 15:29:31
【问题描述】:

我有一个审计表,我在其中添加了一个名为“ExtraInfo”的列,该列可能存储空值,或者它可能包含例如已分配给一个组的所有用户名;可能是 100、200 个用户。 所以我给这个专栏一个 nvarchar(MAX) 类型,因为将来我们的 AD 用户可能会变得更大,我不想面对关于专栏大小的问题。但我有以下担忧:-

  1. SQL server 2008 R2 会只占用 nvarchar(max) 当前拥有的字节数,还是会占用全部容量,即使该列仅包含 10 个字节甚至为空?

  2. 在我不知道的审计表中使用 nvarch(max) 有什么缺点吗?

感谢

【问题讨论】:

  • 如果您需要在该审计表中查找一个或多个行,而您只想从该 ExtraInfo 字段中查找特定用户,那么使用这样的 nvarchar 字段将在未来导致问题。该表越大,性能就越差。
  • 但是我没有在这个额外的信息列上做任何搜索.. 以及我可以遵循哪些其他方法?

标签: c# sql-server sql-server-2008-r2


【解决方案1】:
  1. 它将占用已使用的容量,但在后台它被转换为一个文本字段,这会产生额外的开销。请参阅This 以供参考。
  2. 正如我在评论中指出的那样,如果您需要对此字段进行任何搜索,不建议以这种方式存储此类数据,因为它会随着表的增长而失去性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2020-10-01
    • 1970-01-01
    • 2014-10-13
    • 2015-11-12
    • 2018-05-22
    • 2020-08-02
    相关资源
    最近更新 更多