我们公司项目经理说因为我们使用了guid作为主键,所以查询速度慢,需要把所有的Guid改为自定义的字符串作为主键,也就是使用字符串主键(???),我们公司的数据不到600W。关联一般是6~7个表,使用Hibernate,但是根本没有用HQL。请教各位,究竟 Guid作主键的查询和字符串作主键的查询,究竟相差多少?谢谢

解决方案 »

  1.   

    使用字符串主键和guid作为主键对于数据库来说,都是一样的,两者没有太大的区别。就算是以该主键建立了表的索引,也是一样的。
      

  2.   


    http://blog.joycode.com/ghj/archive/2004/11/29/39911.aspx
    http://www.cnblogs.com/zhenyulu/archive/2004/07/20/25816.html个人觉得int好
      

  3.   

    我也觉得INT作为主键很好,别的没用过。
      

  4.   

    不行哦,我们尝试过INT,但是不能达到我们设计的父子表的关系(多的我就不解释了)不知道各位有没有尝试过呢??
      

  5.   

    GUID是二进制,只占有限的几个字节。并且其结构、产生有专门的格式和方法,因此可靠。使用字符串,只是从偷懒的角度去看吧?!其实这个确实影响不太大。这样的项目经理应该还是个一般的程序员。
      

  6.   

    字符串,有人认为是“万能的”。至于说它比其它格式加快查询速度,其实不值得一驳。斤斤计较用错了方向,大事情上妨害了系统整体结构设计。在SQL这个领域,如果说到提高的查询速度,应该是“数量级”的概念。如果一个查询从3分钟提高到10秒钟,这便说明达到了提高速度的目标了。
      

  7.   

    这两者好像没有到大的区别,两者都是为了使编号不重复。
    因为ID INT 设置为自动增长,就不可能重复,而GUID是全球唯一号。
    两者的查询速度影响应该不是很大。
      

  8.   

    字符串主键和Guid主键的查询速度速度差不多,字符串主键和Guid主键的查询速度不如自增长的数