我最近一直在考虑数据库设计,我有以下问题:
如果为列设置了类型,例如varchar(max),则每次插入行时都会留出2GB的空间?
或者服务器上分配的空间是否等于列中的数据量?
谢谢!
答案 0 :(得分:4)
SQL Server和其他地方的varchar
数据类型意味着大致可变长度的字符数据。 max
或任何其他常量值表示其上限而不是其绝对大小。所以你的后一种观察是正确的:
服务器上分配的空间 等于数据量 柱
现在,如果你定义类似char(200)
的东西(注意那里char前面缺少var)那么是的,无论你在那个字段中存储多少数据(最多200个字符),都会分配200个字符。顺便说一下,char
数据类型的maximum upper bound是8000。
答案 1 :(得分:2)
当然不是:)
Varchar(max)
是 bastardised 混合数据类型(如果你不介意我有点坦率):