我觉得在执行下面这句,排序时 花去的时间比较多!
四个字段按先后同时要满足排序。 你试下改为一个排序看!
declare cur_GetRawData cursor for select SubSrvName,TxName,TxID,TxTime from dbo.RawData order by SubSrvName,TxName,TxID,TxTime
------------------------------
四个字段按先后同时要满足排序。 你试下改为一个排序看!
declare cur_GetRawData cursor for select SubSrvName,TxName,TxID,TxTime from dbo.RawData order by SubSrvName,TxName,TxID,TxTime
------------------------------
解决方案 »
- SQL Server 2005,有个ndf文件居然有117GB,怎么搞定它?
- 请教前辈们一个关于临时表的问题
- 如何知道服务器端T1表的数据在上一次访问过后又发生了变化?SQLSERVER的语句怎么写?
- alter 修改表字段的默认值问题。!!!!
- 数据类型问题
- sql server支持面向对象模型吗?用过的进来说说。
- top 显示问题
- 求助:怎么才能做到把mssql服务器上的某个实例隐藏 不被别人在局域网内找到
- nononono(null,null) 、各位高手!又有vpf问题要请教了!!
- 数据库连接问题
- 继续问,优化一下上次的。太慢了,还有就是有点改动。【子陌红尘】
- 急急急!!CPu占用100% 本有有关于查询方面的优化问题,请教大家!
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
SQL里面的多字段排序问题:
先就前再就后:先SubSrvName—>TxName-->TxID-->TxTime
12万条数据 你说会调动多少次!!!!!!
你分析你的表字段 看有必要设这么多的排序字段吗?
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这样速度就快了。
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表时要保持时间的连续性
请大家再仔细参详一下