2010-01-25 101 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子句的完整示例。