表变量的性能差异,表变量的妙用

本文介绍如何使用 SQL Server 的 Table 变量来优化特定 ID 列表的数据查询过程,并展示了一种测量 SQL 查询执行时间的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()) 可测出执行时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值