(当只涉及两个表时,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行的行数并将 …