全局临时表的速度问题
在统计的时候,建立一个全局临时表 或 临时建立一个真正的表
向其中循环插入数据(共计万条左右),在效率和资源影响上有区别吗?
综合考虑哪个更好一点?
问题点数:40、回复次数:7Top
1 楼txlicenhe(马可)回复于 2003-11-01 08:25:36 得分 5
建真正的表可能更快一些,
全局临时表更占内存吧?Top
2 楼pengdali()回复于 2003-11-01 09:31:50 得分 10
都是表,一样,都要写硬盘,使用内存。
你可以对你的临时表加索引。
create index id1 on ##tmp(userid asc)Top
3 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-11-01 09:44:46 得分 0
我觉得临时表更占内存,毕竟它是在缓存中建立,而真正的表不是Top
4 楼byj2001329()回复于 2003-11-01 10:44:17 得分 0
如果内存不是问题呢,我观察数据服务器的内存利用率好像没有超出过50%(共512M)
Top
5 楼pengdali()回复于 2003-11-01 10:46:07 得分 10
to yoki(小马哥)
临时表是在硬盘上!且他是全局临时表!
如果内存不是问题,用表变量试试:
delcare @a table(a int,b int)Top
6 楼zjcxc(邹建)回复于 2003-11-01 10:58:56 得分 0
临时表都是创建在硬盘上的
表变量才是创建在内存中的.Top
7 楼zjcxc(邹建)回复于 2003-11-01 11:02:02 得分 15
用临时表,创建必要的索引,速度和正式表的差别不会很大,但注意,临时表是创建在tempdb数据库中.资源占用相对较小.
用表变量,不支持索引,创建在内存中,从理论上说,速度肯定快过临时表,毕竟它是直接从内存中读数据.资源占用率高.
但数据量大时,将使用虚拟内存(其实就是硬盘的临时文件),速度会变慢.
所以用那种方法,可以根据你的电脑配置情况,做一个测试就知道了.Top



