nvarchar(最大)与NText

在SQL Server中使用nvarchar(max)NText数据types的优点和缺点是什么? 我不需要向后兼容性,所以在较早的SQL Server版本中不支持nvarchar(max)

编辑:显然这个问题也适用于TEXTIMAGEvarchar(max)varbinary(max) ,对于那些稍后search这些数据types。

好处是你可以在nvarchar(max)上使用像LENLEFT这样的函数,而你不能对ntexttext使用这个函数。 使用nvarchar(max)比使用WRITETEXTUPDATETEXT text更容易。

另外, textntext等也被弃用( http://msdn.microsoft.com/zh-cn/library/ms187993.aspx

VARCHAR(MAX)足够大以容纳TEXT字段。 SQL Server 2000的TEXTNTEXTIMAGE数据types将在SQL Server的未来版本中被弃用,SQL Server 2005提供对数据types的向后兼容性,但build议使用VARCHAR(MAX)NVARCHAR(MAX)VARBINARY(MAX)

ntext将始终将其数据存储在单独的数据库页面中,而nvarchar(max)将尝试将数据存储在数据库logging本身内。

所以nvarchar(max)有点快(如果你的文本小于8 kB)。 我也注意到数据库的大小会慢一些,这也不错。

nvarchar(max)

nvarchar(max)是你想要使用的。 最大的好处是你可以在这个数据types上使用所有的T-SQLstring函数。 这是不可能与ntext 。 我不知道有任何真正的缺点。

你应该显然使用nvarchar(max)

MSDN

Text (与NTextImage一起)最大的缺点是它将在未来版本的SQL Server中被删除,就像文档一样 。 这将有效地使您的模式难以升级时,SQL Server版本将被释放。

我想补充一点,可以使用.WRITE子句进行部分或全部更新,并将高性能附加到varchar(max)/nvarchar(max)数据types。

在这里可以find使用.WRITE子句的完整示例。