none
判断是否有重复记录 RRS feed

  • 问题

  • 要在一个大数据量的表中(大概有几千万条数据吧)中插入一条记录,如何判断表中是否已有该记录呢????
    • 已移动 Raymond Tang 2009年10月14日 5:06 T-SQL (发件人:.NET Framework 一般性问题讨论区)
    2009年10月14日 4:57

答案

  • 只要建立好索引,判断一条记录是否存在不慢的,而且exists遇到了存在的记录就会返回的。可以参考下面的代码

    if exists(select 1 from tb where Id=123)
    begin
      print 'exists'
      return
    end
    
    insert into tb (id,....) values (123,....)
    2009年10月14日 5:21
    版主

全部回复

  • 只要建立好索引,判断一条记录是否存在不慢的,而且exists遇到了存在的记录就会返回的。可以参考下面的代码

    if exists(select 1 from tb where Id=123)
    begin
      print 'exists'
      return
    end
    
    insert into tb (id,....) values (123,....)
    2009年10月14日 5:21
    版主
  • 如果你判断的字段上面已经设置了主键,或者在列上已经有设置唯一性索引的话
    你也可以:直接把insert语句包在try结构里面,然后去捕获异常判断是否插入成功
    2009年10月14日 5:31
    版主
  • 楼上的代码存在并发问题,多用户情况下会出错


    SQL SERVER Engine Test
    2009年10月14日 5:47
    版主
  • 楼上的代码存在并发问题,多用户情况下会出错


    SQL SERVER Engine Test

    恩,谢谢你的建议。
    请教一下你的意思是不是:用Begin Tran把这两句套起来,结合锁定提示?还是有另外更好的办法?
    2009年10月14日 6:22
    版主