小编典典

varchar(MAX) 总是更可取吗?

all

关于 SQL Server,我了解:

  • var意味着内存是惰性分配的,这意味着它完全适合数据(插入时)。
  • MAX表示没有大小限制\限制。

MAX那么,在使用时总是最好使用varchar,因为我们无论如何都不分配整个大小?

我们是否应该仅在我们要在此 DB 列上强制执行约束时才使用常量大小?


阅读 121

收藏
2022-05-04

共1个答案

小编典典

SO User @Remus Rusanu 有一篇关于这个主题的非常好的文章。这是我偷的一个片段,但我建议你阅读整个内容:

处理 MAX 类型(varchar、nvarchar 和 varbinary)的代码路径不同于处理它们等效的非最大长度类型的代码路径。非最大类型可以在内部表示为普通的指针和长度结构。但是最大类型不能在内部存储为连续的内存区域,因为它们可能会增长到 2Gb。所以它们必须由流接口表示,类似于 COM 的 IStream。这会延续到涉及最大类型的每个操作,包括简单的分配和比较,因为这些操作在流接口上更加复杂。最大的影响在分配和分配最大类型变量的代码中可见(我的第一个测试),但影响在每个操作上都是可见的。

2022-05-04