临时表为存储的proc执行添加延迟

时间:2014-12-29 10:15:21

标签: sql-server sqlperformance

我遇到一堆存储过程在事务中执行的情况。

  • 在事务开始时,第一个存储过程检查是否存在临时表,如果存在,则删除它,然后创建新的临时表。
  • 临时表中只有一列存储了事务ID。
  • 此临时表在事务的最后一个存储过程中被访问,然后被删除。

本质上,临时表被用作全局变量,可由不同的存储过程访问。

现在我想从性能角度检查这是否是最有效的方法。当有许多事务(所有事务都是serliazed)时,我不断创建和删除临时表只是为了存储一个值。

以下是我的一些问题

  • 是否会使临时表永久性地提高性能?对于这种情况,我可以更改第一个存储过程以删除临时表中的所有内容。
  • 在SQL-Server中有没有其他方法可以使用这种全局变量?我读到了关于表变量但在这种情况下不起作用,除非我更改了所有存储的过程并为事务ID添加了另一个参数。

2 个答案:

答案 0 :(得分:1)

我没有临时表会导致很多性能问题,请检查执行计划。

但我强烈建议在这里为一个值避免使用表方法,而不是在每个过程中添加一个参数,并将此事务id作为参数传递。

如果您想使用表方法获取全局参数,请使表永久化并截断数据而不是在上一个过程中删除。 delete将写入您在此情况下不需要的事务日志。

答案 1 :(得分:0)

删除并重新创建表只会产生开销(性能瓶颈)。由于您对拥有"全局变量"感兴趣,因此您可以在某些表中将transactionID作为列,只需在需要时进行更新。