2009-04-27 104 views
1

我需要在数据库中保存字符串。每个字符串的大小从1到N不等。我认为这个限制大约是10000,也许更多。 nvarchar(MAX)是解决这个问题的最好方法吗?SQL存储字符串

回答

4

SQL Server 2005及更高版本中,NVARCHAR(MAX)是存储长度超过4000个字符的字符串的最佳方式。

这是推荐用于SQL Server 2005及更高版本的唯一方法,但它仍支持TEXT列以实现向后兼容性。

请注意,您无法在NVARCHAR(MAX)列上创建索引。

要使用索引,请创建一个计算列并将其用于索引搜索。它可以作为一种有效的粗过滤器:

CREATE TABLE foo (id INT NOT NULL, mytext NVARCHAR(MAX) NOT NULL, mytext_index AS CAST(mytext AS NVARCHAR(450)) 

CREATE INDEX ix_foo_mytext (mytext_index) 

SELECT * 
FROM mytext 
WHERE mytext_index LIKE 'L%' 
+0

超过4000,因为我们正在谈论nvarchar – 2009-04-27 15:31:41

1

nvarchar的是正确的,如果它们是的unicode(或其他非-7-或-8-比特串)。如果它们是例如ASCII latin-1文本(在很多情况下足够了),varchar(MAX)将节省空间。