表值函数真的很奇怪

时间:2010-11-04 19:45:34

标签: sql sql-server tsql sql-server-2008 user-defined-functions

当我尝试调用特定的存储过程时,我的应用程序上有一些超时。我把它分离到一个特定的sproc,发现当我用该参数调用该sproc中的tablevalued函数时,它需要永远运行。但是如果我传入一个特定值(如804),它将很快返回。

如果我自己用参数运行它运行正常,但是当我将它添加回查询时,它会永远运行参数....然后用静态值换出param并快速运行?< / p>

我采取的步骤:

  1. 删除程序并重新创建。
  2. 对包含类似查询字符串的所有计划进行DBCC FREEPROCCACHE
  3. 只是一个测试数据库,所以我使用昨晚备份恢复了数据库。
  4. 另一件需要注意的事情。在同一台服务器上的另一个数据库...大约相同数量的数据运行正常......非常奇怪。

    我在俯瞰什么?我真的不明白。

1 个答案:

答案 0 :(得分:1)

Parameter sniffing

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

以前也是我