Tsql TVF的运行时间增加-娱乐后减少

Tsql TVF的运行时间增加-娱乐后减少,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,我有一个TVF,它返回几个表的数据;伪代码类似于: SELECT FROM T1 UNION ALL SELECT FROM T2 UNION ALL SELECT FROM T3 创建此TVF后,其运行时间约为30秒。 在对一个基表进行数据修改后,运行时爆炸,我不得不在30分钟及以上的时间后中止TVF的执行,但没有结果。 但是:如果我放弃并重新创建函数,运行时将减少到已知的30秒 你知道这是怎么回事吗 编辑:TVF没有输入参数。在数据修改后是否只让它执行一次?时间消耗的首次增加可能是由于统计

我有一个TVF,它返回几个表的数据;伪代码类似于:

SELECT FROM T1
UNION ALL
SELECT FROM T2
UNION ALL
SELECT FROM T3
创建此TVF后,其运行时间约为30秒。 在对一个基表进行数据修改后,运行时爆炸,我不得不在30分钟及以上的时间后中止TVF的执行,但没有结果。 但是:如果我放弃重新创建函数,运行时将减少到已知的30秒

你知道这是怎么回事吗


编辑:TVF没有输入参数。

在数据修改后是否只让它执行一次?时间消耗的首次增加可能是由于统计数据更新/执行计划的新计算;AFAIR second执行应该快得多,或者情况并非如此?数据修改后的所有执行都不会在<30分钟的时间间隔内完成。此时我取消该操作,因为该执行时间太长,无法处理。运行时减少只发生在函数的删除和创建之后。合并非常缓慢,我更喜欢使用其他状态。。。但对于这个问题,我想,在维护计划中添加一个更新统计信息!每周的日程安排就足够了。