我想知道SQL Server是如何在内部处理varchar动态长度和存储的。
如果我知道列中的字符长度是固定的,那么使用Varchar会有好处吗?
我知道CHAR和VARCHAR之间的区别,但是在大型数据库中使用CHAR或VARCHAR进行数据库设计的最佳方式是什么?
发布于 2012-02-18 15:30:32
CHAR以行为单位分配其大小,VARCHAR存储字符串的实际大小(2字节),然后存储实际字符串,因此varchar的开销是+2字节,而CHAR的开销是它的大小减去实际字符串长度。如果在varchar中存储空值-其在db中的大小为零。
请参阅Anatomy of the Record
记录头4字节长两个字节的记录元数据(记录类型)两个字节在记录中指向记录的空位图固定长度部分,包含存储具有固定长度的数据类型的列(例如bigint、char(10)、datetime)记录中列的计数的空位图两个字节记录中每列存储一位的字节数,而不管该列是否可以为空(这是
与SQL Server2000(每个可空的列只有一位)不同且更简单)这允许在读取为NULL的列时进行优化这是一个14字节的结构,包含一个时间戳和一个指向tempdb中版本存储的指针
https://stackoverflow.com/questions/9339386
复制相似问题