请教大家一个sql优化方案
原系统中有比较多的像下面的sql,
select dbo.udf_GetFreeStock(a.XX) from table1
其中dbo.udf_GetFreeStock是一个自定义函数,这个函数的内部逻辑比较的复杂,又有查询到多个表。
然后现在select dbo.udf_GetFreeStock(a.XX) from table1这个语句执行的非常慢,1万多条数据就到20多秒了。直接select * from table1是很快的,不到1秒。
请问大家类似这种问题我要如何优化呢?dbo.udf_GetFreeStock(a.XX)返回的信息sql中又是必须要的。
------解决方案--------------------那就要优化自定义函数了
------解决方案--------------------要不把自定义函数的代码,贴出来看看。
一般不建议用哈数,如果非得用,那么尽量让逻辑简单一点,否则速度肯定快不了
------解决方案--------------------贴个执行计划来看看
------解决方案--------------------
是的,10w条的话就调用10w次,如果自定义函数的逻辑复杂的话,那就很慢了。
------解决方案--------------------
这么复杂啊
,能不能直接把里面的代码取出来,和你上面的select * from tab 合并成1语句呢
------解决方案--------------------不是很复杂的话就截图吧
------解决方案--------------------
看着这个执行计划,代码少不了,最好把代码贴出来。
------解决方案--------------------这是存储过程,不是函数啊