嗨,这可能听起来很愚蠢但是因为我遇到过两次这样的情况,我不得不在这里提出问题
我有一个sp,它有6个不同的IF块,每当从页面调用sp时,只会执行一个块
在所有六个IF块中使用了四个公共表,更改只是每个块中的where条件
所以我所做的是在sp的开头创建一个临时表,将所有四个表中所需的列插入到临时表中,并在所有六个具有不同where条件的IF块中使用该表
现在,当我执行sp时,它实际上显示了与早期相比的性能改进
我唯一做的就是通过消除相同的代码和使用临时表来减小sp的大小
现在我的问题出在6个区块中,每次调用sp时只会执行一个,所以减小sp的大小会有什么不同
答案 0 :(得分:2)
你问一个非常开放的问题,所以我会提供一个非常开放的答案,直到你按照我在评论中的要求发布两个版本的存储过程。你走了:
通常,存储过程的大小与其执行持续时间无关。我可以写一个非常短的存储过程,它需要永远执行,我可以写一个很长的存储过程,可以立即执行。
在执行时间方面更重要的是您处理的数据量以及是否可以有效地处理该数据量(使用索引,通过首先减少数据量等)。 / p>
所以我的猜测是,当你优化存储过程时,通过消除相同的代码"您还使SP以更有效的方式访问数据。