admin

是否总是首选varchar(MAX)?

sql

关于SQL Server,我了解:

  • var 表示内存是延迟分配的,这意味着它完全适合(插入时)数据。

  • MAX 表示没有大小限制\限制。

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

我们是否应该仅在要在此数据库列上强制执行约束的情况下才使用恒定大小?


阅读 166

收藏
2021-05-10

共1个答案

admin

SO用户@Remus Rusanu在此主题上有一篇很好的文章。这是我窃取的摘要,但我建议您阅读全文:

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

在文章中,他展示了几个示例,这些示例说明使用varchar(n)通常可以提高性能。

2021-05-10