SQL Server:最好使用varchar(MAX)还是保留一个单独的notes表和INNER JOIN呢?

msi*_*man 6 sql t-sql sql-server sql-server-2008

我们有一条主记录,允许用户输入记事.每个主记录有18个单独的"备注"字段.

目前我们已将其规范化为另一个名为notes的表,具有ID外键列和单个varchar(8000)列,然后我们只需将它们连接在一起.我相信这是SQL Server 2000中推荐的方法.

我们最近迁移到了具有varchar(MAX)的SQL Server 2008,如果我们删除单独的notes表并使用varchar(MAX),我们想知道它是否更好或相等.肯定会更方便.

Ada*_*son 3

我不太清楚你的设置......如果你说用户可以输入 18 个单独的注释(大概是不同的“类型”),那么你应该保留辅助注释表。在这种情况下,是的,从 切换varchar(8000)varchar(MAX)将允许用户在笔记中存储超过 8000 个字符。

需要明确的是,如果用户输入单独的注释,那么您应该像现在一样将表格保持标准化。是否应该切换到varchar(8000)取决于varchar(max)您是否希望允许用户输入超过 8000 个字符。TEXT请注意,如果这样做,内容将存储在行外,就像您在 2005 年之前的 SQL Server 中使用该类型一样。

如果您说(听起来有点像您)用户可以输入一个注释,并且您动态地将其分割成多个块,每个块最多 8000 个字符,那么您应该删除第二个表并放置一varchar(MAX)列在家长记录上。

你问的是这个吗?