首页 新闻 搜索 专区 学院

【数据设计】数据库自增做主键的好处和坏处?

0
悬赏园豆:10 [已解决问题] 解决于 2010-03-14 23:30

我要设计个人员管理系统,用自增列做主键,但是当删除一列后序列就不连续了。

我这里想知道使用自增列做主键的好处和坏处?还有为什么使用自增?还有使用什么做主键好(分情况说明?嘿嘿~~)?谢谢啦~~

问题补充: 首先谢谢你的问题,不过自增没有特别的意思,只是一个发现啦。不要说这个了哈~回答下我上面问题,还有个小问题,就是高手们用什么做主键,说说呗。 学习下
疯狂的包子的主页 疯狂的包子 | 初学一级 | 园豆:145
提问于:2010-03-13 15:52
< >
分享
最佳答案
0

自增能保证永不重复,这是主键要求的天然属性。

不明白你为什么要主键连续……

自增做主键的坏处目前没有发现,但如果是分布式储存的话,有可能会出现冲突。

为了避免上述情况出现,在分布式存储时,可以使用GUID做主键——带来的副作用是性能下降,因为生成一个GUID肯定没生成一个自增长的ID快

收获园豆:5
自由飞 | 初学一级 |园豆:174 | 2010-03-13 16:01
我只是发现他不连续了,当时是想到一个极端情况,如果反复的操作,会不会到达自增的最大值?到时候怎么办?这种情况是不是太极端了??
疯狂的包子 | 园豆:145 (初学一级) | 2010-03-13 16:06
@自在的蚂蚁: 主键不要用自增列,自增利没有意思,而且断号还要想办法补上,容易达到最大值 用一些有意思的字符串代替
Virus-BeautyCode | 园豆:1619 (小虾三级) | 2010-03-24 11:33
其他回答(1)
0

你说的自增不连续是什么意思?数据库的自增原则来说依据你设定的自增偏移量来进行自增的,你说的不连续是说删除一些数据后这个自增Id就出现了不连续是吗?这是自增本身就是这样子的,不会说是当你删除一个ID值后下一次插入会去填充删除的这个ID的,是不会这样子的。他只会从上次添加的ID处加上偏移量做为下一次的ID值得。

你说的极端情况是会出现的,不过目前int字段取值范围是+-2的32次方减1,也就是有+-21亿多,一般的系统应该都会够用了吧!

收获园豆:5
西越泽 | 园豆:10713 (专家六级) | 2010-03-13 16:27
首先谢谢你的问题,不过自增没有特别的意思,只是一个发现啦。不要说这个了哈~回答下我上面问题,还有个小问题,就是高手们用什么做主键,说说呗。学习下
支持(0) 反对(0) 疯狂的包子 | 园豆:145 (初学一级) | 2010-03-13 16:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册