Hallo zusammen,
ich habe folgendes Problem.
Alle betroffenen Tabellen haben einen Primärschlüssel und Foreign Key Constraints.
Z.B. create table t1 (
f1 integer not null primary key,
f2 varchar(100) ...
);
Ein
select f1 from t1 where f1 = 1234
führt trotz vorhandenem
Primärschlüssel RDB$PRIMARY421 "nach frischem Recover" zu einem
NATURAL SCAN im PLAN.
Wenn ich den in RDB$INDICES vorhandenen Primärschlüssel suche, wird
er gefunden und trotzdem kommt es zu einer Fehlermeldung
"Der Index RDB$PRIMARY421 ...kann für die Tabelle T1 nicht gefunden werden"
wenn ein PLAN mitgegeben wird
select f1 from t1 where f1 = 1234
PLAN SORT (T1 ORDER RDB$PRIMARY421)
Lege ich jetzt einen neuen Index IX1 auf F1
create index IX1 on T1(F1);
nimmt der Optimizer sofort den neuen Index im Plan auf.
Auch ein
select f1 from t1 where f1 = 1234
PLAN SORT (T1 ORDER IX1)
funktioniert richtig.
Warum wird der Primärschlüssel (oder auch Foreign Key Indices in anderen Tabellen) nicht verwendet ??? Kennt jemand das Problem, das Firebird
seine Primär-/Fremdschlüssel vergisst ?
Weiterhin habe ich festgestellt, das nach dem Recover auch die Trigger
extrem langsam laufen. Nach dem ACTIVE/INACTIVE-Setzen der normalerweise
im PLAN des Optimizers vorhandenen Indices werden diese auch wieder verwendet.
Bin für jede Info dankbar.
Gruß
Lutz Bodes
ich habe folgendes Problem.
Alle betroffenen Tabellen haben einen Primärschlüssel und Foreign Key Constraints.
Z.B. create table t1 (
f1 integer not null primary key,
f2 varchar(100) ...
);
Ein
select f1 from t1 where f1 = 1234
führt trotz vorhandenem
Primärschlüssel RDB$PRIMARY421 "nach frischem Recover" zu einem
NATURAL SCAN im PLAN.
Wenn ich den in RDB$INDICES vorhandenen Primärschlüssel suche, wird
er gefunden und trotzdem kommt es zu einer Fehlermeldung
"Der Index RDB$PRIMARY421 ...kann für die Tabelle T1 nicht gefunden werden"
wenn ein PLAN mitgegeben wird
select f1 from t1 where f1 = 1234
PLAN SORT (T1 ORDER RDB$PRIMARY421)
Lege ich jetzt einen neuen Index IX1 auf F1
create index IX1 on T1(F1);
nimmt der Optimizer sofort den neuen Index im Plan auf.
Auch ein
select f1 from t1 where f1 = 1234
PLAN SORT (T1 ORDER IX1)
funktioniert richtig.
Warum wird der Primärschlüssel (oder auch Foreign Key Indices in anderen Tabellen) nicht verwendet ??? Kennt jemand das Problem, das Firebird
seine Primär-/Fremdschlüssel vergisst ?
Weiterhin habe ich festgestellt, das nach dem Recover auch die Trigger
extrem langsam laufen. Nach dem ACTIVE/INACTIVE-Setzen der normalerweise
im PLAN des Optimizers vorhandenen Indices werden diese auch wieder verwendet.
Bin für jede Info dankbar.
Gruß
Lutz Bodes
Comment