1

我目前正在优化一个存储过程,因为它由于存在大量计算和条目而超时。

但是,我不确定情况。最好使用 8 个临时表(从数据库中的其他数据中提取信息)还是将数据库中的数据放入各种变量中并访问它们?

哪个可以提供最佳性能来解决超时问题?

4

2 回答 2

1

取决于您在“临时”表中有多少条目。

  • 一个真正的临时表#temp可以在其上定义索引,SQL Server 将对其行数等进行分析,并且它确实参与事务,例如,您可以插入行然后回滚,这些行将从您的“消失”中临时表

  • @tempSQL Server 将始终认为一个表变量只有一行——如果那里只有几行,这不是问题。但是,如果您需要存储数百行,SQL Server 查询优化器的这种假设可能会导致查询计划效率极低。另外:表变量参与事务 - 这可能是好事 - 也可能是坏事 - 取决于您的环境

于 2012-06-07T18:27:41.637 回答
0

根据您上面的回答,您绝对应该使用临时表。您还应该考虑将它们编入索引以提高性能。

于 2012-06-07T18:33:53.850 回答