我正在阅读的这本书对为什么将最严格的条件放在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 ×1