【发布时间】:2011-01-27 18:30:50
【问题描述】:
我们有一个允许用户输入注释的主记录。每个主要记录有 18 个单独的“注释”字段。
目前我们已经将其规范化为另一个名为 notes 的表,其中包含一个 ID 外键列和一个 varchar(8000) 列,然后我们只需根据需要将它们 INNER JOIN 在一起。我相信这是 SQL Server 2000 中推荐的方法。
我们最近迁移到了具有 varchar(MAX) 的 SQL Server 2008,我们想知道如果我们摆脱单独的注释表并改用 varchar(MAX),性能是否更好或相等。肯定会更方便。
【问题讨论】:
-
我的理解是 varchar(MAX) 将实际数据保存在单独的页面上,并且仅在实际表中保存指向该位置的指针。换句话说,SQL Server 在内部做着我们手动做的事情。这是不正确的吗?从所有的回复来看,听起来确实如此,但我想澄清一下。这确实是我想知道的问题。
-
否;这就是
text类型的工作原理。对于varchar(max),只有当大小超过varchar的最大大小(即8000)时才为真。 -
知道了。谢谢,我相信我现在清楚了。我们将保留它目前的设置。
标签: sql sql-server tsql sql-server-2008