考虑以下psuedo T-SQL代码(由存储过程执行):
CREATE TABLE #localTable ...
<do something with the temporary table here>
DROP TABLE #localTable;
DROP TABLE
语句是存储过程执行的最后一个语句 - 该语句有什么好处吗?
请注意,我不是要求在存储过程的 middle 中删除临时表(本地或非本地)(即在不再需要表之后,但在存储结束之前)过程代码) - 由于减少了继续执行存储过程所需的内存,这似乎具有重要的好处。我想知道在存储过程完成执行时,显式删除表与“让”SQL Server执行此操作是否有任何好处(或任何影响,实际上,正面或否定)。
答案 0 :(得分:8)
有关此here的详细信息。
执行DROP TABLE时,临时对象将重命名为内部表单,并在下次执行时遇到CREATE TABLE时重命名为相同的用户可见名称。此外,还会缓存在临时表上自动创建的任何统计信息。这意味着下次调用过程时,前一次执行的统计信息仍然存在。
答案 1 :(得分:7)
这样做不会有害,但是当连接断开时表会被丢弃。我个人认为这是一个很好的习惯。它还允许开发人员,他们可能不得不在此工作,你不会忘记这样做。
答案 2 :(得分:0)
放下临时表是一个好习惯 否则在我们操作后消耗TEMP DB中的空间。
这将导致空间问题。 只有在收缩TEMP DB或重新启动服务器时才会清除此信息。