(当只涉及两个表时,oracle 的优化器对两种方法执行相同的操作,因此我的问题涉及三个表)
假设三个表t1
,t2
并t3
与成对1:n
由左到右的关系:
t1 (1)--(n) t2 (1)--(n) t3
Run Code Online (Sandbox Code Playgroud)
每个分区p
在所有连接中使用的公共列上,每个分区都有一个主键id
、外键t2.id1 -> t1.id
和t3.id2 -> t2.id
.
实际上,n
(两者)都很小。可能t2
每t1
行大约 2t3
行,从t2
.
我希望像这样加入这些表:
select t1.id t1id, t2.id t2id, count(1) t3count
from t1 join t2 on (t1.p = t2.p and t1.id = t2.id1)
join t3 on (t2.p = t3.p and t2.id = t3.id2)
group by t1.id, t2.id
Run Code Online (Sandbox Code Playgroud)
它给出t3
每t2
行的行数并将 …