一个查询的效率
begin
print CONVERT(VARCHAR(30),GETDATE(),9)
declare @t table(n int,id int,num int,sum1 int,list1 int)
insert into @t values(1,1,1,0,0)
insert into @t values(2,2,3,0,0)
insert into @t values(3,3,2,0,0)
insert into @t values(4,2,2,0,0)
insert into @t values(5,2,1,0,0)
--这里的数据是假的,正常有1000条左右
update @t
set sum1=id+num
print CONVERT(VARCHAR(30),GETDATE(),9)
/********************************************************
--下面这句用于排列名次,效率很低,怎么做能提高效率??????
********************************************************/
update @t
set list1=x.m
from (
select t1.n as nx,sum( case when t2.sum1> t1.sum1 then 1 else 0 end)+1 as m from @t t1,@t t2 group by t1.n )
x
where n=x.nx
print CONVERT(VARCHAR(30),GETDATE(),9)
select * from @t
end
------解决方案--------------------這樣呢?
begin
print CONVERT(VARCHAR(30),GETDATE(),9)
declare @t table(n int,id int,num int,sum1 int,list1 int)
insert into @t values(1,1,1,0,0)
insert into @t values(2,2,3,0,0)
insert into @t values(3,3,2,0,0)
insert into @t values(4,2,2,0,0)
insert into @t values(5,2,1,0,0)
--这里的数据是假的,正常有1000条左右
update @t
set sum1=id+num
print CONVERT(VARCHAR(30),GETDATE(),9)
/********************************************************
--下面这句用于排列名次,效率很低,怎么做能提高效率??????
********************************************************/
update x
set list1= (Select Count(n) + 1 From @t Where sum1 > x.sum1)
From @t x
select * from @t
end