日期:2014-05-17  浏览次数:21119 次

为什么频繁删除和创建临时表,会影响性能?
为什么频繁删除和创建临时表,会影响性能?

------解决方案--------------------
tempdb本来就有自己的数据文件,而且你删除、创建都要更改系统信息,加之如果你临时表有数据,除非truncate,不然delete的话要加锁、记日志等等。当你内存不足的时候你的操作就会在磁盘上执行,cpu是纳秒级别,内存是微秒级别,磁盘是毫秒级别,每个级别都相差接近1000倍,你可以想象一下。如果不想这样,可以考虑使用cte、表变量等等。不过它们都有其适用范围。
最好的方法还是改进设计,很多书上都有相同的话,就是临时表不应该常用,因为意味着你的设计不合理,经常要很多表的数据才能查出来。
------解决方案--------------------
探讨

引用:
其他不说 频繁的删除和创建表 带来的I/O开销就是一个瓶颈。

我又不读数据文件,会有多少i/o呢?

------解决方案--------------------
消耗系统表的资源了
------解决方案--------------------
看一下这篇帖子吧:CSS SQL Server Engineers
http://support.microsoft.com/kb/328551

创建一个表是需要系统做很多工作的。