--构造数据
Create table Ta(ID int,C1 varchar(10))
declare @ID int
set @ID=1
while(@ID<=10000)
begin
Insert into Ta(ID,C1)
values(@ID,'AAAAAAAAAA')
set @ID=@ID+1
end--查询1:
declare @N int
set @N=1
select * from Ta A,Ta B where A.ID=B.ID-@N order by 1--查询2:
select * from Ta A,Ta B where A.ID=B.ID-1 order by 1
查询1要比查询2慢了几十倍,为什么会这样?
请教一下!
set @N=1
定义变量同时赋值需要时间
慢的那个则要对每个B.ID-@N生成的值去A中循环查找,匹配时间应该是O(n)
exec('select * from Ta A,Ta B where A.ID=B.ID-'+@N+' order by 1')