我觉得在执行下面这句,排序时 花去的时间比较多!
四个字段按先后同时要满足排序。 你试下改为一个排序看!
declare cur_GetRawData cursor for select SubSrvName,TxName,TxID,TxTime from dbo.RawData order by SubSrvName,TxName,TxID,TxTime
                     ------------------------------

解决方案 »

  1.   

    if exists (select * from sysobjects where id = object_id('dbo.SP_InsertRawData'))
    drop procedure dbo.SP_InsertRawData
    gocreate procedure dbo.SP_InsertRawData
    as                
    begin
        select identity(int,0,1) as id,a.* 
        into #T 
        from 
            (select 
                 top 100 percent SubSrvName,TxName,TxID,TxTime 
             from 
                 dbo.RawData 
             order by 
                 SubSrvName,TxName,TxID,TxTime) a
        
        insert dbo.AdjustData 
        select
            c.HostName,b.SubSrvName,b.TxName,b.TxID,a.TxTime,b.TxTime,datediff(s,a.TxTime,b.TxTime)
        from
            #T a,#T b,dbo.RawData c
        where
            a.id+1=b.id and a.id%2=0
    end
    go
      

  2.   

    order by SubSrvName,TxName,TxID,TxTime
    SQL里面的多字段排序问题:
    先就前再就后:先SubSrvName—>TxName-->TxID-->TxTime
    12万条数据 你说会调动多少次!!!!!!
    你分析你的表字段 看有必要设这么多的排序字段吗?
      

  3.   

    --创建测试数据
    Create table RawData (SubSrvName varchar(50), TxName varchar(50),TxID int ,TxTime datetime,HostName varchar(50))
    insert into RawData select 'Yo','Ko',1,getdate(),'AD'
    insert into RawData select 'Yos','Kov',3,getdate()-10,'AD'
    insert into RawData select 'Yod','Koh',5,getdate()-20,'AD'
    insert into RawData select 'Yof','Kog',6,getdate()-39,'AD'Create table AdjustData(SubSrvName varchar(50), TxName varchar(50),TxID int ,TxTime datetime,HostName varchar(50)
    ,dtStartTime DateTime,dtHourEndTime Datetime,intTxTim int)---调试
    declare @dtStartTime datetime
    declare @dtHourEndTime datetime
    --结束时间
    set @dtHourEndTime = getdate()--开始时间
    select @dtStartTime = TxTime from RawData--插入新数据库
    insert AdjustData 
        select
            r.SubSrvName,r.TxName,r.TxID,r.TxTime,r.HostName,r.TxTime,@dtHourEndTime,datediff(day,r.TxTime,@dtHourEndTime)
        from
            RawData r这样速度就快了。
      

  4.   

    不好意思,我的表没放上来,我放些数据,然后大家再仔细看看
    C01A01  FDIS91  COMD04  STOP  2005-12-02 14:43:46.365
    C01A01  FDIS91  EQSA01  START  2005-12-02 14:43:46.678
    C01A01  FDIS91  EQSA01  STOP  2005-12-02 14:43:46.699
    C01A01  FDIS91  COMD04  START  2005-12-02 14:43:48.126
    C01A01  FDIS91  COMD04  STOP  2005-12-02 14:43:48.139
    C01A01  FDIS91  EQCD01  START  2005-12-02 14:43:49.417
    C01A01  FDIS91  EQCD01  STOP  2005-12-02 14:43:50.918
    C01A01  FDIS91  FTDF01  START  2005-12-02 14:43:51.099
    C01A01  FDIS91  FTDF01  WARNING  2005-12-02 14:43:50
    C01A01  FDIS91  FTDF01  STOP  2005-12-02 14:43:51.158
    C01A01  FDIS91  EQCA01  START  2005-12-02 14:43:53.021
    C01A01  FDIS91  EQCA01  STOP  2005-12-02 14:43:54.895
    C01A01  FDIS91  COMD04  START  2005-12-02 14:43:54.895
    这是rawdata里的数据
    转到fdisrawdata表时要保持时间的连续性
    请大家再仔细参详一下
      

  5.   

    把你建表和建索引的T-SQL拿出来看看,我帮你测试一下,
      

  6.   

    http://www.blog.com.cn/user25/lijunyi/archives/2005/213533.shtml