2010-01-25 104 views
157

在SQL Server中使用nvarchar(max)NText数据类型有什么优缺点?我不需要向后兼容性,因此旧版SQL Server发行版不支持nvarchar(max)nvarchar(max)vs NText

编辑:显然的问题也适用于TEXTIMAGEvarchar(max)varbinary(max),对于那些寻找那些数据类型之后。

回答

170

的好处是,你可以使用nvarchar(max)功能,如LENLEFT,你不能这样做,对ntexttext。使用nvarchar(max)比使用WRITETEXTUPDATETEXTtext更容易。

此外,textntext,等等,都被弃用(http://msdn.microsoft.com/en-us/library/ms187993.aspx

+9

[SQL Server 2016](https://msdn.microsoft.com/en-us/library/ms187993.aspx)显然仍会支持它们。 – Confluence 2015-06-29 19:16:27

+1

@Confluence历史上,就SQL Server中存在的文本和nText较旧的数据类型而言,它们是否与varchar和nvarchar相比较? – RBT 2016-05-08 12:14:57

36

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

10

nvarchar(max)是您要使用什么。最大的好处是你可以在这个数据类型上使用所有的T-SQL字符串函数。这是不可能的,ntext。我不知道有任何真正的缺点。

+0

我不明白的是,他们说'nvarchar(max)'去,但是这限制了我4000个字符。如果我想要一个领域持有更多的呢? – VoidKing 2013-12-19 20:36:15

+1

nvarchar(最大)不会将您限制为4000个字符。你有无限数量的字符。此外,文本和ntext已被SQL Server弃用。这意味着在未来的版本中,它们将不再受支持。 – 2013-12-19 22:35:35

+0

OIC,我正在使用SQL Server CE,它将我的'nvarchar(max)'限制为4000个字符。所以对于SQL Server Compact,我不得不在某些情况下使用'ntext'。当他们停止它,我想我将不得不升级一些网站。 – VoidKing 2013-12-20 14:09:17

4

Text(与NTextImage一起)的最大缺点是它将在未来版本的SQL Server中被删除,如the documentation。这将有效地使您的模式更难以升级,届时将发布该版本的SQL Server。

27

ntext总是它的数据存储在一个单独的数据库页面,而nvarchar(max)将尝试将数据存储在数据库记录本身。

因此nvarchar(max)速度稍快(如果您的文本较小,为8 kB)。我也注意到数据库的大小会增长得稍慢,这也是不错的。

转到nvarchar(max)

1

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

Here您可以找到使用.WRITE子句的完整示例。