使用数据库中的存储过程,是否会出现以下情况?
我有一个查询非常大的表的过程,在我的查询中,我调用存储过程,并使用WHERE record_class = "THE ONE IM LOOKING FOR"
跟随它。
在存储过程中,我不是通过record_class
来限制记录,WHERE
子句除了过滤过程返回的结果之外还做了什么?
换句话说,如果我想加快结果,因为它花费的时间太长,会为程序添加record_class
的参数,只选择执行任务时的参数比使用{更快{1}}条款?
答案 0 :(得分:1)
你的分析是完全正确的,如果你直接在你的存储过程中应用条件而不是在外面它肯定会更高效。
在第一种情况下,您的过程将返回每一行而不应用您的条件(此过程完全不知道此条件),然后将使用您的WHERE
子句过滤此结果。
根据您的需要,最佳解决方案可能是为存储过程定义参数,以便您可以在执行时传递此参数,并且结果将被过滤。我不确切知道你的程序的目的是什么,但通过这样做,你将保留在多种情况下执行相同程序的可能性(你只需要传递你想要过滤结果的record_class
如果你想要整个数据,或者让它NULL
。
这种方法需要对您的过程进行一些修改(添加参数)和修改查询(添加WHERE
子句,以便在需要时过滤结果。)
希望这会对你有所帮助。