小编sim*_*ing的帖子

为什么最严格的条件应该列在 where 子句的最后?

我正在阅读的这本书对为什么将最严格的条件放在WHERE子句最后给出了一个相当糟糕的解释。

假设我们有查询 1:

SELECT COUNT(*)
FROM TEST
WHERE LAST_NAME = 'SMITH'
AND CITY = 'INDIANAPOLIS';
Run Code Online (Sandbox Code Playgroud)

和查询 2:

SELECT COUNT(*)
FROM TEST
WHERE CITY = 'INDIANAPOLIS'
AND LAST_NAME = 'SMITH';
Run Code Online (Sandbox Code Playgroud)

第一个查询需要 20 秒,而第二个查询只需要 10 秒。这本书继续说“因为第二个查询返回更快的结果并且最严格的条件列在 WHERE 子句的最后,可以安全地假设优化器自下而上读取 WHERE 子句。

我很困惑我应该如何做出这个推断。是不是在 1 个条件后过滤比第一个过滤器慢得多?

condition

2
推荐指数
1
解决办法
1140
查看次数

标签 统计

condition ×1