Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个类似的声明;
SELECT tableA A, tableB B, tableC C WHERE a.ID = b.ID and C.level = '2'
如果我执行
SELECT tableA A, tableB B, tableC C WHERE a.ID = b.ID and
我的结果在 33 秒内返回。如果我执行原始查询,结果将在 150 秒内返回。为什么C.level = '2'让它变慢?
C.level = '2'
如果您查看 Oracle 的执行计划,您将了解它在幕后所做的事情。但是,总而言之,我的猜测是您的逻辑是:
通过添加C.level = '2',我们应该得到一个更小的数据集,因此应该更快地返回
但是,对于数据库引擎,它现在必须遍历数据并检查每条记录,看它是否符合您更复杂的条件。它如何做到这一点取决于您的架构。例如,如果您有一个索引 on c.level,这可能会使性能差异可以忽略不计。
c.level