Hallo Liebe Leute,
ich habe hier ein Problem bei dem ich nicht weiter komme. Ich habe ein Abfrage welche auch funktioniert, jedoch zu lange dauert. Es dauert einige Minuten bis das Ergebnis kommt. Da ist nicht ein so großes Problem, jedoch würde ich es gerne schneller hinbekommen. Ich weiß einfach nicht wie ich die Abfrage optimieren kann.
Der Server ist ein Interbase. Ich vereinfache mal die Tabellen auf das nötigste. Die Daten müssen auch so in die Tabellen geschrieben werden. Die richtigen Indexe sind auch gesetzt.
Delphi-Quellcode:
Tabelle Wagen
Felder:
WagenZaehler Integer (mit Index)
Wagen VarChar(20)
Tabelle Strecken
Felder:
StreckenZaehler Integer (mit Index)
Strecke VarChar(20)
Tabelle Verlauf
Felder:
VerlaufZaehler Integer (mit index)
IDWagen Integer (mit Index)
IDStrecke Integer (mit Index)
So das sind die Tabelle in vereinfachter Form. Das ganze besteht aus noch etlich Feldern und etlichen Tabellen
Hier mal einige Werte in den Tabellen
Delphi-Quellcode:
Tabelle Wagen:
WagenZaehler Wagen
1 Wagen grün
2 Wagen gelb
3 Wagen rot
4 Wagen blau
Tabelle Strecken
StreckZaehler Strecke
1 Strecke 1
2 Strecke 2
3 Strecke 3
4 Strecke 4
Tabelle Verlauf
VerlaufZaehler IDWagen IDStrecke
1 1 1
2 2 1
3 3 4
4 1 2
5 4 2
6 1 3
7 1 4
8 4 1
9 4 3
Nun endlich zu meinem Problem. Ich möchte z.b. alle Wagen, die die (Strecke 1 oder 2) und (Strecke 3 oder 4) benutzen. Dazu habe ich mir diesen
SQL Code überlegt.
SQL-Code:
Select Wagen
From Wagen
Where Wagenzaehler in
(Select IDWagen From Verlauf where IDStrecke in ('1','2'))
and WagenZaehler in
(Select IDWagen From Verlauf where IDStrecke in ('2','4'))
Als Ergebnis sollte hier Wagen 1 erscheinen
Wie gesagt es dauert einige Minuten. Kann man es optimieren ??
Danke Tanja