nvarchar(50)与nvarchar(max)的含义

Jam*_*son 19 sql database sql-server sql-server-2005

如果下面两个表的唯一区别是nvarchar(50),nvarchar(max)并且每个字段中的字符串的范围是1到50个字符,那么下面两个表之间的一般存储和性能差异是什么?这是在SQL Server 2005中.

表格1

firstname nvarchar (50)
lastname nvarchar (50)
username nvarchar (50)
Run Code Online (Sandbox Code Playgroud)

表2

firstname nvarchar (max)
lastname nvarchar (max)
username nvarchar (max)
Run Code Online (Sandbox Code Playgroud)

Rya*_*gro 28

如果您保证有1到50个字符之间的字符串,那么使用varchar(X)与varchar(MAX)运行的相同查询将在更长的X字符串中运行.此外,您无法在varchar(MAX)字段上创建索引.

一旦您的行的值超过8000个字符,那么还有其他性能考虑因素(这些行基本上被视为TEXT而不是varchar(n)).虽然这与比较并不十分相关,因为对于长度超过8000的字符串,没有varchar(N)选项.


小智 6

首先,您将无法在(最大)长度列上创建索引.因此,如果要存储可搜索的数据,即,如果这些列将成为WHERE谓词的一部分,则可能无法提高查询性能.在这种情况下,您可能需要考虑FullText Search和这些列的索引.