guid做主键选择char(36)还是Uniqueidentifier


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,存储空间
char(36):存储空间是36个字节,
Uniqueidentifier是16个字节,原因(如:F9274DE1-322D-46FF-A5E9-20670FFF661B,每个都是16进制,共有32个,而每个16进制数可用4位表示(2^4),故guid()是128位,一个字节是8位,那么guid()共用128/8=16个字节存储):

2,Uniqueidentifier格式必须是32个16进制+4个-,那么位数少于36或者字母中出现非a-f就会报错,如
0EC75E6B-7434-485E-BCEA-2130651861DD可用Uniqueidentifier存储,但0HC75E6B-7434-485E-BCEA-2130651861DD就不行。
故在兼容性方面,char(36)可存储<=36的所有字符,而Uniqueidentifier只能存储32个16进制+4个-. 故:在现在存储空间价格便宜的情况下,在兼容方面,推荐char(36)