用GUID类型的缺陷是编码没有规律,不具有可读性. 另外编码较长,影响处理效率.编码生成的算法比较复杂,对数据处理效率有一定影响.优点是使用简单.

解决方案 »

  1.   

    这样做有必要吗?
    所有的主键都是一个吗?
    而且数据多了很可能会溢出的
    不如用GUID
    要么就做一个字符串yyyyMMdd99999999
    专门做一个表保存当天最大的序号,每次获取新的ID后,对序号进行更新
      

  2.   

    我的想法就是用long int 来实现 GUID字段功能,
    "任何表的主健值不可能重复" 的意思就是在任何表插入新纪录时,该记录的主健都通过统一的Proc或函数获取一个唯一的long int值(可以使用自增)
      

  3.   

    --无论使用自增列,还是普通列,都不能用函数,用户定义函数只允许读取表.--可以这样处理
    --1.使用自增列
    create table tb_bh(id bigint identity,a bit)
    go--生成编号的存储过程
    create proc p_getbh
    @re bigint
    as
    insert tb_bh(a) values(1)
    set @re=scope_identity()
    go--2.使用普通列
    create table tb_bh(bh bigint)
    go--生成编号的存储过程
    create proc p_getbh
    @re bigint
    as
    begin tran
    select @re=bh+1 from tb_bh with(xlock,tablock)
    if @@rowcount=0
    begin
    insert tb_bh values(1)
    set @re=1
    end
    else
    update tb_bh set bh=@re
    commit tran
    go
      

  4.   

    谢谢zjcxc(邹建) 老兄 ,不知道这种方法的效率与GUID相比谁更好一点????
      

  5.   

    查询效率当然比guid好.处理的效率就难说了,估计是差不多复杂度来说,肯定是比guid复杂(从使用的角度)