nvarchar(最大)与NText
在SQL Server中使用nvarchar(max)
和NText
数据types的优点和缺点是什么? 我不需要向后兼容性,所以在较早的SQL Server版本中不支持nvarchar(max)
。
编辑:显然这个问题也适用于TEXT
和IMAGE
与varchar(max)
和varbinary(max)
,对于那些稍后search这些数据types。
好处是你可以在nvarchar(max)
上使用像LEN
和LEFT
这样的函数,而你不能对ntext
和text
使用这个函数。 使用nvarchar(max)
比使用WRITETEXT
和UPDATETEXT
text
更容易。
另外, text
, ntext
等也被弃用( http://msdn.microsoft.com/zh-cn/library/ms187993.aspx )
VARCHAR(MAX)
足够大以容纳TEXT
字段。 SQL Server 2000的TEXT
, NTEXT
和IMAGE
数据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
(与NText
和Image
一起)最大的缺点是它将在未来版本的SQL Server中被删除,就像文档一样 。 这将有效地使您的模式难以升级时,SQL Server版本将被释放。
我想补充一点,可以使用.WRITE子句进行部分或全部更新,并将高性能附加到varchar(max)/nvarchar(max)
数据types。
在这里可以find使用.WRITE
子句的完整示例。