繁体   English   中英

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

[英]Implications of nvarchar (50) vs nvarchar (max)

如果下面两个表的唯一区别是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)

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

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

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

nvarchar max适用于最大2GB的列。 所以基本上它占用了更多的资源。 如果您知道不需要那么多空间,最好使用nvarchar(50)。 每个字符大约2个字节,所以2 GB,10亿个字符......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM