SQL Server性能临时表或变量

时间:2012-06-07 18:21:50

标签: sql sql-server-2008

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

  • SQL Server将始终将表变量@temp视为只有一行 - 如果您只有少量行,那么这不是问题。但是如果你需要存储数百行,那么SQL Server查询优化器的这种假设可能会导致查询计划效率极低。另外:表变量参与交易 - 这可能是好事 - 或者是坏事 - 取决于您的环境

答案 1 :(得分:0)

根据您的上述回答,您绝对应该使用临时表。您还应该查看索引以提高性能。