我有如下所示的存储过程(SQL Server 2008):
select...
union
select...
union
select...
union
select...
union
select...
union
select...
union
select...
总共我有8个“选择”。 通常执行时间为OK。但有时需要一些时间。 我发现在drop&create之后,问题就消失了。 为什么会这样呢?我该怎么解决呢? 谢谢!
答案 0 :(得分:1)
这个评论太长了。
查询速度很慢的最可能的原因是,尽管优化器尽了最大努力,但它却产生了次优的执行计划。
重新创建表后查询加速的最可能原因是表上收集的统计信息更加准确,从而使优化器可以选择更好的执行计划。
您能对此做什么?查看有效的执行计划并添加查询提示,以便查询始终使用相同的算法。以我的经验,这通常涉及修复联接算法。
注意:还有其他可能性。例如,在某些情况下,表和索引碎片会导致严重的性能损失,而重新创建表可以解决这些问题。