declare @d datetime
set @d=getdate()
SELECT [P_ID] FROM [ProductInfo]
WHERE [P_ID] IN
(28674,28667,28241,355,7210,14646,2164,11891,4519,14671,21788,21816,21817,21108,21196)
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
现要求按括号中的ID顺序输出结果
此时, 可以用到SQLSERVER2000中特有的功能Table变量(亦可用临时表,但性能还是有不小的差距)
结果语句如下:



declare @d2 datetime
set @d2=getdate()
declare @list Nvarchar(4000)
declare @str Nvarchar(10)
declare @orderid int
declare @tmp int

Declare @TableVar Table (OrderID int Primary Key ,TestID int)

set @list='28674,28667,28241,355,7210,14646,2164,11891,4519,14671,21788,21816,21817,21108,21196'
set @orderid=0
while (charindex(',',@list)>0)
begin
set @str=substring(@list,1,charindex(',',@list))
print @str
set @tmp= cast(Replace(@str,',','') as int)
print @tmp
set @list=substring(@list,len(@str)+1,len(@list)-len(@str)+1)
----set @str=Replace(@str,',','')
set @orderid=@orderid+1
print @orderid
Insert Into @TableVar Values (@orderid, @tmp)
end

-- Select TestID From @TableVar order by OrderID


select [P_ID] from productinfo p
inner join @TableVar a
on p.p_ID=a.TestID
order by a.OrderID

select [语句执行花费时间(毫秒)]=datediff(ms,@d2,getdate())
另外形如
set @d=getdate()
SELECT ***
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
用set @d=getdate() 和select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 可测出执行时间