数据库引擎内部使用的数据结构要比您认为的要复杂得多!是的,存在碎片化问题,以及更新具有较大价值的varchar可能会导致性能下降的问题,但是,如果不更全面地了解所涉及的数据结构,很难解释/理解这些问题的含义。
对于MS Sql服务器,您可能要先了解页面-存储的基本单位(请参阅http://msdn.microsoft.com/zh-
cn/library/ms190969.aspx)
就修补程序vs可变存储类型对性能的性能影响而言,需要考虑以下几点:
- 使用可变长度的列可以提高性能,因为它允许在单个页面上容纳更多的行,这意味着更少的读取
- 使用可变长度的列需要特殊的偏移值,并且这些值的维护需要少量的开销,但是这种额外的开销通常可以忽略不计。
- 另一个潜在的成本是当包含该行的页面几乎已满时增加列的大小的成本
如您所见,情况相当复杂-一般而言,但是您可以相信数据库引擎非常擅长处理可变数据类型,并且当长度可能存在明显差异时,它们应该是首选的数据类型。列中保存的数据。
在这一点上,我还将推荐一本出色的书《 Microsoft Sql Server 2008内部原理》,以更深入地了解这种复杂的事情的真相!



