То, что я имею в виду, если я имел следующую схему:«пропуск» таблицы в SQL внутренние соединения
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
);
Если бы я хотел, чтобы получить B_data
и C_data
, используя отношения, описанные здесь, есть ли разница между следующее:
select
b.B_data,
c.C_data
from
tableB b
inner join tableC c
on b.A_id = c.A_id;
и:
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 что большинство баз данных оптимизируют любой запрос как один и тот же, но есть ли случаи, когда ограничения внешнего ключа на tableA
сделают соединение через tableA
намного более эффективным? Существуют ли случаи, когда эти запросы могут давать разные результаты?