xiuxuan 发表于 2018-10-19 12:47:45

SQL中的变量表和临时表

  1、变量表:
  

declare @SDT datetime,@EDT datetime    --定义执行开始、结束时间  
set @SDT=getdate()
  
--定义变量表
  
declare @t table
  
(
  
ID int,
  
Myfield nvarchar(50),
  
InputDT datetime
  
)
  
--插入数据到变量表

  
insert@t select top 10000>  

  
set @EDT=getdate()
  
select DATEDIFF(ms,@SDT,@EDT) AS Diffms   --开始、结束时间间隔
  

  2、临时表
  

declare @SDT datetime,@EDT datetime  
set @SDT=getdate()
  
--创建临时表:
  
create table #t
  
(
  
ID int,
  
Myfield nvarchar(50),
  
InputDT datetime
  
)

  
insert #t select top 10000>  
select * from #t
  
set @EDT=getdate()
  
select DATEDIFF(ms,@SDT,@EDT) AS DiffNS
  
drop table #t
  

  不创建临时表直接插入
  

declare @SDT datetime,@EDT datetime  
set @SDT=getdate()

  
select top 10000>  
select * from #t
  
set @EDT=getdate()
  
select DATEDIFF(ms,@SDT,@EDT) AS DiffNS
  
drop table #t
  

  总结:数据量少的时[总行数小于1000],使用变量表
  数据量大时(行数>10万),使用创建临时表再插入。
  数据量一般时(10万>行数>1万),使用不建立临时表直接插入。
  

                              以上测试在各机器上结果可能不同。

页: [1]
查看完整版本: SQL中的变量表和临时表