Hallo,
etwa so ?
ist die 2. Detail-Tabelle, aber ähnlich aufgebaut.
Delphi-Quellcode:
SQL.Add('
Delete From DataFoxInput_Details2');
SQL.Add('
Where');
SQL.Add('
(DataFoxInput_Details2.DataFoxInputId');
SQL.Add('
In (Select DataFoxInput.Id From DataFoxInput');
SQL.Add('
Where DataFoxInput.TheDate=:CheckDate)');
SQL.Add('
)');
Das geht
FB sowas von in die Knie.
Ein
select * from DataFoxInput_Details2
Where
(DataFoxInput_Details2.DataFoxInputId
In (Select DataFoxInput.Id From DataFoxInput
Where DataFoxInput.TheDate='8.12.2007'))
braucht 50 Sekunden (lokaler
SQL-Server)
Plan:
PLAN (DATAFOXINPUT INDEX (RDB$PRIMARY153))
PLAN (DATAFOXINPUT_DETAILS2 NATURAL)
Das hier im Select natürlich ein Join besser wäre,
ist klar, es geht aber ja am das delete.
Was is nu kaputt ?
Indizes sind natürlich deauf.
die Details2 Tabelle hat etwa 2.7 Mio Einträge,
davon ~ 30000 vom 8.12.
Heiko