关于SQL Server,我了解:
var
表示内存是延迟分配的,这意味着它完全适合数据(on insertion).MAX
表示没有大小restriction\limitation.那么,在使用varchar
时使用MAX
总是更可取的吗,因为我们无论如何都不会分配整个大小?
只有当我们想要对此DB列强制执行约束时,我们才应该使用常量大小吗?
发布于 2011-12-15 05:55:23
SO User @Remus Rusanu有一篇关于这个主题的很好的文章。这是我偷来的一个片段,但我建议你阅读全文:
处理MAX类型(varchar、nvarchar和varbinary)的代码路径与处理其等效的非最大长度类型的代码路径不同。非max类型可以在内部表示为普通的指针和长度结构。但是,最大类型不能在内部存储为连续的内存区,因为它们可能会增长到2 2Gb。因此,它们必须由一个流接口表示,类似于COM的IStream。这将延续到涉及最大类型的每个操作,包括简单的赋值和比较,因为这些操作在流接口上更加复杂。最大的影响在分配和分配最大类型变量的代码中可见(我的第一个测试),但影响在每个操作上都可见。
在本文中,他展示了几个示例,这些示例证明了使用varchar(n)通常可以提高性能。
你可以找到整篇文章here。
发布于 2011-12-15 05:55:37
发布于 2011-12-15 05:54:48
以下是微软的建议:
当列数据项的大小为consistent.
https://stackoverflow.com/questions/8512164
复制相似问题