Ce que je veux dire, si je devais le schéma suivant:« sauter » une table interne SQL rejoint
create table tableA(
A_id number not null primary key
);
create table tableB(
B_id number not null primary key,
A_id number not null references tableA(A_id),
B_data text not null
);
create table tableC(
C_id number not null primary key,
A_id number not null references tableA(A_id),
C_data text not null
);
Si je voulais récupérer B_data
et C_data
en utilisant les relations décrites ici, est-il une différence entre les éléments suivants:
select
b.B_data,
c.C_data
from
tableB b
inner join tableC c
on b.A_id = c.A_id;
et:
select
b.B_data,
c.C_data
from
tableB b
inner join tableA a
on b.A_id = a.A_id
inner join tableC c
on a.A_id = c.A_id;
I SUS pect que la plupart des bases de données optimisera l'une ou l'autre requête pour être la même, mais y a-t-il des cas où les contraintes de clé étrangère à tableA
rendront la connexion via tableA
beaucoup plus efficace? Y a-t-il des cas où ces requêtes pourraient produire des résultats différents?