如果下面两个表格的唯一差异是nvarchar(50)
与nvarchar(max)
并且每个字段中的字符串范围是1到50个字符,那么下面两个表格之间的一般存储和性能差异是什么?这是在SQL Server 2005中。
表1
firstname nvarchar (50)
lastname nvarchar (50)
username nvarchar (50)
表2
firstname nvarchar (max)
lastname nvarchar (max)
username nvarchar (max)
答案 0 :(得分:28)
如果你保证有1到50个字符之间的字符串,那么使用varchar(X)和varchar(MAX)运行跨越X字符串的相同查询将运行得更快。此外,您无法在varchar(MAX)字段上创建索引。
一旦你的行的值超过8000个字符,那么还有其他性能考虑因素(这些行基本上被视为TEXT而不是varchar(n))。虽然这与比较并不十分相关,因为对于长度超过8000的字符串,没有varchar(N)选项。
答案 1 :(得分:6)
首先,您将无法在(最大)长度列上创建索引。因此,如果要存储可搜索的数据,即,如果这些列将成为WHERE谓词的一部分,则可能无法提高查询性能。在这种情况下,您可能需要考虑对这些列进行FullText搜索和索引。
答案 2 :(得分:-3)
nvarchar max适用于最大2GB的列。所以基本上它占用了更多的资源。如果您知道不需要那么多空间,最好使用nvarchar(50)。每个字符大约2个字节,所以2 GB,10亿个字符......