A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我现在大多数表使用的为ID自增做主键看杨老师视频说guid是业界主流想问下他们俩做主键区别及各自优势及在什么情况下使用自增ID在什么情况使用guid比较好 最好有例子说明。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

7 个回复

倒序浏览
ID自增做主键的效率比较低,而GUID做主键要比ID自增做主键效率高出很多,而GUID做主键的缺点就是占用数据库空间比较大,而目前来说,磁盘空间都用T来计算了,也步在乎那么点.GUID的优势有很多,比如数据导入导出的时候,效率很明显,GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同,世界上的任何两台计算机都不会生成重复的 GUID 值,需要GUID的时候,可以完全由算法自动生成,非常适合于排序、标识和存储,所以呢,强烈建议使用GUID,抛弃ID自增......但是中国的国情.......唉,无语啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
主键用int性能好。GUID是16字节,数据量大时,本身占的空间就多了。
一般我们主键都是选择聚集索引的,GUID生成是随机的,会使插入数据时,记录会放在中间。
而int的自增长列,可以确保新记录都加在表尾。
如果涉及到多数据库数据同步,就在表加一列guid,做唯一标识。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
guid 是唯一标识  不同的电脑,不同的时间,都可以生成一个不同的符号,但是空间占用大不是按序排列
id 自增 简单,有序,如果 做一些简单的报表 之类的可以用,而guid更实用一些

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC,地址,纳秒级时间,芯片ID码等算出来的,这样保证每次生成的Guid都不相同.SQLServer中生成GUID的函数newid(),.NET中生成Guid的方法:Guid.NewGuid(),返回是Guid类型.

Guid的优点:效率高,数据导入导出方便;缺点:占用空间大,不易读.(倾向于使用Guid)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
int自动增字段的优点:占用空间小、无需开发人员干预、易读;

  缺点:效率低,数据导入导出的时候很痛苦。

Guid的优点:效率高,数据导入导出方便;缺点是占用空间大,不易读。

业界主流倾向使用Guid作主键。因为主键一般不是给外人看的,而且现在硬盘空间越来越大,不在乎这一点空间。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
id 做主键很方便,我在公司,还是多数用的id。
但是guid做主键也很好,实际项目中做实际考虑用哪个。
guid除了做主键还可以做关联字段,很唯一,不可能有相同的guid产生。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
李根 中级黑马 2012-7-27 14:29:28
8#
主键用int性能好。GUID是16字节,数据量大时,本身占的空间就多了,一般我们主键都是选择聚集索引的,GUID生成是随机的,会使插入数据时,记录会放在中间,而int的自增长列,可以确保新记录都加在表尾,如果涉及到多数据库数据同步,就在表加一列guid,做唯一标识。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马