表值函数真的很奇怪的问题

Posted

技术标签:

【中文标题】表值函数真的很奇怪的问题【英文标题】:Really strange issue with Table Valued Function 【发布时间】:2010-11-04 19:45:33 【问题描述】:

当我尝试调用特定的存储过程时,我的应用程序出现了一些超时。我将它隔离到一个特定的存储过程中,并发现当我在该存储过程中使用参数调用表值函数时,它需要永远运行。但是如果我传入一个特定的值(比如 804),它会很快返回。

如果我使用参数单独运行它,它运行良好,但是当我将它添加回带有参数的查询时,它会永远运行....然后用静态值替换参数并且它运行得很快?

我已采取的步骤:

    已删除过程并重新创建。 在所有包含类似查询字符串的计划上运行 DBCC FREEPROCCACHE。 只是一个测试数据库,所以我用昨晚的备份恢复了数据库。

还有一点需要注意。在同一台服务器上的另一个数据库上......大约相同数量的数据运行良好......非常奇怪。

我忽略了什么?我真的不明白。

【问题讨论】:

相关问题在这里:***.com/questions/866722/… 确保函数参数和SP参数的数据类型相同。还要检查两种情况下的执行计划。 @amit_g: 应该回答这个问题。这是一个有效的观点。 【参考方案1】:

Parameter sniffing?

对不起,简短的回答,但值得阅读一些答案...

我以前也是

Stored Procedure failing on a specific user

【讨论】:

我也链接到你回答的一个相关问题。 谢谢大家,我会看看...感谢您的反馈。 在我看来是关于其中一个基表的统计信息。再次感谢您的信息。

以上是关于表值函数真的很奇怪的问题的主要内容,如果未能解决你的问题,请参考以下文章

真的很奇怪的drawRect行为??

真的很奇怪 GWT RPC 行为 + 显示

Vue.js if语句的问题。工作真的很奇怪

C++ 中的 if 语句行为真的很奇怪

在 C# 中使用 TcpClient 的 HTTP 客户端真的很奇怪

sql 真的,mysql的方式很奇怪