论坛首页 Java企业应用论坛

数据库中,用int或者用varchar做主键,性能会有很大影响吗?

浏览 7513 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-05  
请教一下:

数据库中,如果表的数据量很大,访问表的操作也比较频繁,用int做主键和用varchar做主键,int一定要比varchar好很多吗?

谢谢。

这个问题是这样产生的:现在一个项目中,用hibernate,我说用hibernate的uuid算法生成主键,但是一个同事说,那样的性能太差,一定要用int做主键。所以,就产生了现在这个问题。
   发表时间:2005-03-08  
linuja 写道
请教一下:

数据库中,如果表的数据量很大,访问表的操作也比较频繁,用int做主键和用varchar做主键,int一定要比varchar好很多吗?

谢谢。

这个问题是这样产生的:现在一个项目中,用hibernate,我说用hibernate的uuid算法生成主键,但是一个同事说,那样的性能太差,一定要用int做主键。所以,就产生了现在这个问题。

理论上当然是int快。但这个快慢体现到你的系统中,会和你的数据库的规模有关。
0 请登录后投票
   发表时间:2005-03-08  
linuja 写道
请教一下:

数据库中,如果表的数据量很大,访问表的操作也比较频繁,用int做主键和用varchar做主键,int一定要比varchar好很多吗?

谢谢。

这个问题是这样产生的:现在一个项目中,用hibernate,我说用hibernate的uuid算法生成主键,但是一个同事说,那样的性能太差,一定要用int做主键。所以,就产生了现在这个问题。


使用同机器字长相同的整数作为主键效率是最高的。
性能是否会差还要看你使用了多少外键作为连接条件,数据量有多大。对于小量的数据,几乎感觉不到它们的差别。
如果你的主键没有其他用途,你同事的建议也还合理,不过在集群的环境中产生的算法可能会复杂些。
0 请登录后投票
   发表时间:2005-03-08  
OK,谢谢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics