我目前正在优化一个存储过程,因为它由于存在大量计算和条目而超时。
但是,我不确定情况。最好使用 8 个临时表(从数据库中的其他数据中提取信息)还是将数据库中的数据放入各种变量中并访问它们?
哪个可以提供最佳性能来解决超时问题?
我目前正在优化一个存储过程,因为它由于存在大量计算和条目而超时。
但是,我不确定情况。最好使用 8 个临时表(从数据库中的其他数据中提取信息)还是将数据库中的数据放入各种变量中并访问它们?
哪个可以提供最佳性能来解决超时问题?
取决于您在“临时”表中有多少条目。
一个真正的临时表#temp
可以在其上定义索引,SQL Server 将对其行数等进行分析,并且它确实参与事务,例如,您可以插入行然后回滚,这些行将从您的“消失”中临时表
@temp
SQL Server 将始终认为一个表变量只有一行——如果那里只有几行,这不是问题。但是,如果您需要存储数百行,SQL Server 查询优化器的这种假设可能会导致查询计划效率极低。另外:表变量不参与事务 - 这可能是好事 - 也可能是坏事 - 取决于您的环境
根据您上面的回答,您绝对应该使用临时表。您还应该考虑将它们编入索引以提高性能。