显式删除临时表或让SQL Server处理它

处理临时表删除的最佳做法是什么? 我已经读过,你应该明确处理掉,也是SQL服务器应该处理下降….什么是正确的方法? 我一直觉得你应该自己清理你在一个杂志中创build的临时表,等等。但是,我发现了其他一些不同的地方。

任何有识之士将不胜感激。 我只是担心我没有遵循我创build的临时表的最佳做法。

谢谢,

小号

我的观点是,首先看看你是否真的需要一个临时表 – 或者 – 你可以做一个CTE。 其次,我会永远放弃我的临时表。 有时你需要有一个临时表作用域到连接(例如## temp),所以如果你第二次运行查询,并且你有明确的代码来创build临时表,你会得到一个错误,说表已经存在。 清理完自己总是一个很好的软件实践。

当超出范围时,本地临时表(名称中的单个#)将被自动删除,因此,如果范围是短暂的(例如存储过程),则显式的删除是没有意义的。

在multithreading场景中,每个线程创build自己的一组表并且线程的数量被限制,而不是删除自己的表意味着pipe理者会考虑你的线程完成并产生更multithreading…但是临时表仍然是(因此连接到服务器),所以你会超过你的州长的限制。 如果你手动删除临时表,那么线程不会完成,直到他们已经被删除,并没有新的线程产生,从而保持州长的能力,以防止压倒SQL引擎

按照我的看法。 不需要显式地删除临时表。 SQL Server将处理删除存储在临时数据库中的临时表,以防空间处理查询。