例如,nvarchar(max)的性能是否不如nvarchar(100)?
发布于 2010-03-17 16:03:35
here (SO)和here (MSDN)回答了同样的问题
引用David Kreps的回答:
当您将数据存储到VARCHAR(N)列时,这些值的物理存储方式是相同的。但是当您将其存储到VARCHAR(MAX)列时,在屏幕后面,数据被作为文本值处理。因此,在处理VARCHAR(MAX)值时,需要进行一些额外的处理。(仅当大小超过8000时)
VARCHAR(MAX)或NVARCHAR(MAX)被视为“大值类型”。大值类型通常存储在“行外”。这意味着数据行将有一个指向存储‘大值’的另一个位置的指针...
发布于 2010-03-17 16:05:35
请注意,除了Alex's answer之外,您还不能对nvarchar(max)列进行索引,因此在这种情况下,它可能是性能方面的限制。
发布于 2010-03-17 16:13:59
一般规则是使用最适合存储在其中的数据的数据类型。如果您正在谈论varchar(100),那么听起来您不太可能需要存储varchar(max)能够处理的最大数据量,并且应该坚持使用varchar(100)。
要问自己的问题是,您存储的是什么数据,您存储和检索这些数据的频率是多少。你是如何使用它的,查找,搜索还是只存储?
至于区别,varchar(max)并不等同于TEXT。varchar( max )中的主要增强是,数据仍然存储在行中,除非它超过8k的最大长度,此时它被存储在blob中。
请看这个问题,它更具体地说明了varchar(max)和text之间的区别。
https://stackoverflow.com/questions/2460598
复制相似问题