我现在有一个需求,需要在一个表中添加一列来存储唯一的ID(guid)。这个ID用于匹配不同表和数据库中的记录,但是不会有外键约束。将guid存储为varchar(32)还是uniqueidentifier类型更好呢?
使用这个列进行连接操作,但不会经常使用。这个ID并不是主键。我的问题是关于存储和性能方面的。
我现在有一个需求,需要在一个表中添加一列来存储唯一的ID(guid)。这个ID用于匹配不同表和数据库中的记录,但是不会有外键约束。将guid存储为varchar(32)还是uniqueidentifier类型更好呢?
使用这个列进行连接操作,但不会经常使用。这个ID并不是主键。我的问题是关于存储和性能方面的。
uniqueidentifier
。UNIQUEIDENTIFIER
需要16个字节的存储空间;而一个VARCHAR(32)
需要32字节的数据空间(实际上并非真正的可变长度),还需要在某处存储其实际长度。此外,由于它是一个可变长度字段(尽管没有必要这样做),这会增加SQL Server存储的开销。因此,使用UNIQUEIDENTIFIER
不仅是“自然”的选择(将GUID
作为GUID
存储),而且从磁盘空间的角度来看更为“经济”。 - marc_s