关于在存储过程中调用函数

求助关于在存储过程中调用函数
在存储过程中 我在调用函数的前面和后面加了个 select getdate() 用来获取前后时间
select getdate()
set @leftCapa=dbo.fn_GetLeftCapaForLine(@特别WC,'lin',@id,@newStartDay,@产品cd,@加工cd,@工程cd)
select getdate()

 用时 将近40秒


这是直接查询函数的
select dbo.fn_GetLeftCapaForLine('210600','lin',2,'2015-11-03 00:00:00.000','3001250',' ','391150')

用时不到1秒,求助有什么区别吗?

为什么时间会差这么多
------解决思路----------------------
你直接查询与传的参数一样吗?
还有在sql里面有事务吗?

------解决思路----------------------
调用存储过程是没有问题,问题是你的存储过程里面不要再嵌套过多的二级、三级存储过程或者视图

以前遇到过类似的问题,达到三级以后,程序调用就超级慢
------解决思路----------------------


这个一方面要看你的函数代码是如何写的,是不是逻辑复杂,在函数中是否还调用了视图等。

另一方面可能是 在存储过程中调用时,用的是变量传入的值,而直接执行是填写的实际值, 当传入的是变量的时候,sql server产生的执行计划往往不够准确,因为他不知道你会传入什么具体的值,所以往往会导致性能问题。