首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >varchar(MAX)总是首选的吗?

varchar(MAX)总是首选的吗?
EN

Stack Overflow用户
提问于 2011-12-15 05:49:59
回答 4查看 39.1K关注 0票数 78

关于SQL Server,我了解:

  • var表示内存是延迟分配的,这意味着它完全适合数据(on insertion).
  • MAX表示没有大小restriction\limitation.

那么,在使用varchar时使用MAX总是更可取的吗,因为我们无论如何都不会分配整个大小?

只有当我们想要对此DB列强制执行约束时,我们才应该使用常量大小吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-15 05:55:23

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

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

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

你可以找到整篇文章here

票数 63
EN

Stack Overflow用户

发布于 2011-12-15 05:55:37

在这里寻找一个好的答案:

Should I use varchar(n) or varchar(MAX)?

简而言之,从存储的角度来看是一样的,但是从查询优化的角度来看,最好使用varchar(N)。

票数 17
EN

Stack Overflow用户

发布于 2011-12-15 05:54:48

以下是微软的建议:

当列数据项的大小为consistent.

  • Use varchar时,
  • 使用char当列数据项的大小变化时,considerably.
  • Use varchar(max)当列数据项的大小变化很大且大小可能超过8,000字节时,
    • 使用char。

ref

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8512164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档