我需要在数据库中保存字符串。每个字符串的大小从1到N不等。我认为这个限制大约是10000,甚至更多。 nvarchar(MAX)将是解决此问题的最佳方法吗?
答案 0 :(得分: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%'
答案 1 :(得分:1)
nvarchar如果是unicode(或其他非7位或8位字符串)则是正确的。如果它们是例如ASCII latin-1文本(在许多情况下足够),则varchar(MAX)将节省空间。