Код: Выделить всё
CREATE TABLE TABLE1 (
ID GUID NOT NULL /* GUID = INTEGER */
);
ALTER TABLE TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY (ID);
и
CREATE TABLE TABLE2 (
ID GUID NOT NULL /* GUID = INTEGER */
);
ALTER TABLE TABLE2 ADD CONSTRAINT PK_TABLE2 PRIMARY KEY (ID);
Код: Выделить всё
select C.ID from Table1 C
left join Table2 A on A.ID=C.ID
Order By C.ID
PLAN SORT (JOIN (C NATURAL,A INDEX (RDB$PRIMARY3)))
Для запроса
Код: Выделить всё
select C.ID from Table1 C
join Table2 A on A.ID=C.ID
order by C.ID
PLAN JOIN (C ORDER RDB$PRIMARY2,A INDEX (RDB$PRIMARY3))
При этом для FB 2 план строится всегда нормальный.
При этом если запрос переделать в неявный left join, то план для Ib становится приемлемым:
Код: Выделить всё
select C.ID, (select A.ID from Table2 A where A.ID=C.ID) from Table1 C
order by C.ID
PLAN (A INDEX (PK_TABLE2)) PLAN (C ORDER PK_TABLE1)