我有一个Oracle查询,其结构如下:
SELECT *
FROM table
WHERE X='true' OR
Y IN (complicated subquery)
Run Code Online (Sandbox Code Playgroud)
如果Oracle看到X确实等于'true',它仍然会尝试评估WHERE子句的Y IN(子查询)部分吗?此外,在诸如此类的语句中,子查询是否会对表中的每个条目执行多次?我会用以下的东西变得更好:
WITH subQ as (complicated subquery)
SELECT *
FROM table
WHERE X='true' OR
Y IN (SELECT id FROM subQ)
Run Code Online (Sandbox Code Playgroud)