实际上我已经分配了一个任务,我必须从SP中删除动态查询和循环(如果可能)。为此,我创建了原始SP的副本并处理新复制的SP。我在新SP中进行了一些更改,并尝试使用实际执行计划来比较(旧的和新的)SP的性能,并且我正在执行具有相同参数的SP。
问题在于,在我们的数据库中,我们所有的SP都接受一个共同的参数,即session_code(varchar类型),并且在所有SP中,我们首先调用另一个SP来验证从调用应用程序提供的session_code参数。在我的新SP中,我没有更改会话验证SP的调用,并在其他动态查询中进行了更改。但是当我比较两个(旧的和新的)SP的实际执行计划时,我可以看到执行会话验证SP的成本是不同的。对于我新创建的SP,它显示的成本高于旧SP。
你能不能帮我理解优化器的这种行为,我没有改变SP /查询中的任何内容。