首页 > 解决方案 > SQL 中内联表值函数的性能影响

问题描述

我在数据仓库系统中有一个使用内联表值函数 (ITVF) 的存储过程。如果我将 ITVF 的代码复制到程序本身,那么它会大大提高性能(从 50 秒到 9 秒)。我的印象是 ITVF 的执行就像程序本身的代码一样。

我可以看到使用 ITVF 时查询计划中的实际行数和估计行数之间存在巨大差异。

ITVF 中是否有可能进行参数嗅探?还有什么原因?谢谢。

标签: sqlsql-servertsqlsqlperformanceinline-table-function

解决方案


您的函数使查询不可分割,因此查询优化器无法为其创建正确的执行计划。这就是为什么实际行和估计行之间存在巨大差异的原因。


推荐阅读