多种临时表效率的对比分析 老帅(20141107) 平时在写存储过程的时候,经常会用到临时表,而临时表的用法到底有几种,哪种效率更好呢?我们来做个对比分析。 实验数据:表a有400万条记录,只查询一个字段title 1. 直接查询 --开启时间分析 set statistics ti
多种临时表效率的对比分析老帅(20141107)平时在写存储过程的时候,经常会用到临时表,而临时表的用法到底有几种,哪种效率更好呢?我们来做个对比分析。实验数据:表a有400万条记录,只查询一个字段title
1. 直接查询--开启时间分析set statistics time on
go--查询select title from a --结果sql server 执行时间:占用时间 = 22013 毫秒。
2.变量表--开启时间分析set statistics time on
go--插入declare @tmpa table( title varchar(200))insert into @tmpaselect title from a--查询select * from @tmpa--结果sql server 执行时间:占用时间 = 22913 毫秒。
3.临时表--开启时间分析set statistics time on
go--插入create table #tmpa( title varchar(200))insert into #tmpaselect title from a--查询select * from #tmpa--结果sql server 执行时间:占用时间 = 22743 毫秒。
4.不创建临时表,直接插入到临时表--开启时间分析set statistics time on
go--插入select * into #tmpa from(select title from a) as b--查询select * from #tmpa--结果sql server 执行时间: 占用时间 = 22671 毫秒。
5.使用with as临时表--开启时间分析set statistics time on;--插入with tmpa as(select title from a)--查询select * from tmpa--结果sql server 执行时间:占用时间 = 22188 毫秒。
通过以上的分析,很容易看出哪种方法效率更高了。在存储过程中尽量使用临时表来存储临时数据,不要使用变量表。