SQL 中内联表值函数的性能影响
Posted
技术标签:
【中文标题】SQL 中内联表值函数的性能影响【英文标题】:Performance impact of Inline Table Value Function in SQL 【发布时间】:2018-11-02 10:31:10 【问题描述】:我在数据仓库系统中有一个使用内联表值函数 (ITVF) 的存储过程。如果我将 ITVF 的代码复制到程序本身,那么它会大大提高性能(从 50 秒到 9 秒)。我的印象是 ITVF 的执行就像程序本身的代码一样。
我可以看到使用 ITVF 时查询计划中的实际行数和估计行数之间存在巨大差异。
在 ITVF 中是否有可能进行参数嗅探?还有什么原因?谢谢。
【问题讨论】:
不看代码本身就很难说... 【参考方案1】:您的函数使查询不可分割,因此查询优化器无法为其创建正确的执行计划。这就是为什么实际行和估计行之间存在巨大差异的原因。
【讨论】:
我不认为你可以在一般情况下做出这样的陈述。你有支持文件吗?以上是关于SQL 中内联表值函数的性能影响的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在此 SQL Server 内联表值函数上收到 11555 错误?