0

我有一个类似的声明;

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'让它变慢?

4

1 回答 1

0

如果您查看 Oracle 的执行计划,您将了解它在幕后所做的事情。但是,总而言之,我的猜测是您的逻辑是:

通过添加C.level = '2',我们应该得到一个更小的数据集,因此应该更快地返回

但是,对于数据库引擎,它现在必须遍历数据并检查每条记录,看它是否符合您更复杂的条件。它如何做到这一点取决于您的架构。例如,如果您有一个索引 on c.level,这可能会使性能差异可以忽略不计。

于 2012-09-27T12:00:40.457 回答