子查询调用次数

时间:2014-11-16 19:25:24

标签: sql oracle subquery

TableA,TableB,TableC是三个具有行数| A |,| B |的表和| C |分别。每个子查询运行的频率是多少?两个查询的结果是否相等?需要解释

a) SELECT * FROM TableA a
WHERE EXISTS (
SELECT * FROM TableB b -- Subquery 1
WHERE a.ID = b.ID AND EXISTS (
SELECT * FROM TableC c -- Subquery 2
WHERE b.ID = c.ID
)
)
b) SELECT * FROM TableA a
WHERE EXISTS (
SELECT * FROM TableB b -- Subquery 1
WHERE a.ID = b.ID AND EXISTS (
SELECT * FROM TableC c -- Subquery 2
WHERE a.ID = c.ID
)
)

1 个答案:

答案 0 :(得分:0)

  

每个子查询必须多久运行一次?

您正在使用相关子查询,因此对于外部查询的每一行,内部查询都将被评估。

  

两个查询的结果是否等效?

在您的情况下是,在第一个查询中,您正在检查

对于TableATableBTableB匹配,TableC

匹配

在第二个查询中,您正在检查

对于TableATableBTableC

中匹配