补充一下:
1:我的服务器是四核的
2:SQLserver由于历史原因,用的是SQL 2000

解决方案 »

  1.   

    /*if not object_id('NewRecord')is null
       drop table NewRecord
    go
    create table NewRecord(FILED0 varchar(20),FILED1 varchar(20), FILED2 varchar(20), FILED3 varchar(20))
    go
    if not object_id('test')is null
       drop proc test
    go
    create proc test 
        @para1 varchar(20), 
        @para2 varchar(20), 
        @para3 varchar(20), 
        @para4 varchar(20) 
    as 
        declare @r int 
        if exists(select 1 from NewRecord where FILED0=@para1 AND FILED1=@para2 AND FILED2=@para3 AND FILED3=@para3) 
          set @r=1 
        else if exists(select 1 from NewRecord where FILED0=@para1 AND FILED1=@para2) 
          set @r=2 
        else 
          set @r=0 
          insert NewRecord select @para1,@para2,@para3,@para3 
    return @r*/
    --truncate table NewRecord
    exec test 'A','B','C','D'
    select * from NewRecordFILED0               FILED1               FILED2               FILED3
    -------------------- -------------------- -------------------- --------------------
    A                    B                    C                    C
    A                    B                    C                    C
    A                    B                    C                    C你的代码没看到你如何控制重复的~~
      

  2.   

    随着数据的不断插入,总数据量越来越多,select上面耗费的时间会不断增长。
    优化方法: 
    1,对FILED0和FILED1 建立索引
    2,在功能需求允许的情况下考虑将历史数据删除或转存到其他表当中          
      

  3.   

    没看到你是如何比对重复的,所谓的重复是如何定义的?
    而且你每次都会在最后面执行那个insert 语句,貌似前面做的比对都是无用功
      

  4.   

    估计你没有相关的索引。建议对不能出现重复值的列建立索引,可以用主键或者unique约束。
    同时对你的存储过程表示怀疑