【发布时间】:2020-11-26 23:28:58
【问题描述】:
我将进行一个复杂的(对我而言)SQL 查询,该查询涉及查找与采购订单行相关联的发票价值和收货价值的总和(因此这是 3 个连接表,可能还有更多)以及各种日期过滤器等等。
在许多情况下,订单行将达到我知道我再也不必担心它们的状态。因此,我可以在我的采购订单行表中添加一个逻辑字段来显示这一点,在我继续进行时勾选相关行,并在 SQL 中添加一个where 条件以使其忽略它们。
我想知道的是,那个 Where 条件会在 Select 之前还是之后执行?因为如果它正在执行所有计算然后只是过滤输出,我不想要它,因为它只是更多的时间/处理。但是,如果 Where 子句过滤输入(即在它进行任何计算之前),那么它可能会非常节省时间。
我知道您可以直接说“试试看”,但无论我添加该逻辑字段是否会对其他流程和报告产生影响,因此我希望在不花费太多时间构建测试的情况下对其进行计划。
那么,TL;DR:在 SQL 中,Where 是在 Select 之前执行的吗? 或者换句话说,Where 是否过滤查询的输入或输出?
希望这是有道理的,我在这里还是有点初学者!
【问题讨论】:
-
没有查询、数据库、样本数据和期望的结果,几乎没有信息可以用来制定答案。
-
逻辑上,WHERE 子句过滤 FROM 子句结果。在实践中,谁知道 - 相信 dbms 优化器。
标签: sql where-clause