繁体   English   中英

存储过程-常规

[英]Stored Procedure - General

对于数据库中的存储过程,以下情况是否正确?

我有一个查询非常大表的过程,在我的查询中,我调用了存储过程,并在WHERE record_class = "THE ONE IM LOOKING FOR"跟随WHERE record_class = "THE ONE IM LOOKING FOR"

在存储过程中,我并没有限制record_class的记录,那么WHERE子句除了过滤该过程返回的结果以外,还没有做其他事情吗?

换句话说,如果我想因为花太长时间而加快结果的速度,是否要在过程中添加record_class的参数并仅在执行任务时才选择参数,比使用WHERE子句更快?

您的分析是完全正确的,如果直接在存储过程中而不是在存储过程中应用条件,则肯定会提高性能。

在第一种情况下,您的过程将不使用您的条件而返回每一行(此条件对于该过程是完全未知的),然后将使用WHERE子句过滤此结果。

根据您的需求,最好的解决方案可能是为存储过程定义一个参数,以便您可以在执行时传递此参数,并且结果将被过滤。 record_class知道您的过程的目的是什么,但是这样做,您将有可能在多种情况下执行相同的过程(您只需要传递要过滤结果的record_class或让它为NULL如果您需要全部数据)。

这种方法需要对过程进行一些修改(添加一个参数),并修改您的查询(添加需要时过滤结果的WHERE子句)。

希望这会帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM