Hallo,
ich habe eine IB-Datenbank mit einigen Tabellen und wenigen Testdatensätzen. Select funktiniert schnell und gut aber folgende Abfrage dauert ewig bzw. hängt sich sogar auf...
<PRE>
select distinct N.ID, N.PLZ, E.KM
from T_NUTZER N
left join V_WIRKSAMENUTZERZEITEN W
left join T_PLZ P
left join T_ENTFERNUNGEN E
left join T_DATEN D
left join T_INTERESSE I
left join T_BEWERTUNGEN BN
on (N.ID=W.NUTZER)
on (N.PLZ=P.PLZ)
on (E.PLZ1=:AKTPLZ) and (N.PLZ=E.PLZ2)
on (N.ID=D.NUTZER)
on (N.ID=I.NUTZER)
on (BN.NUTZER2=:AKTNUTZER) and (BN.NUTZER1=N.ID)
where (E.KM<=:MAXKM) and (N.STATUS=30)
and ((N.TYP='D')or (N.TYP='P'))
and ((D.GEBDATUM>=:MINGEBDATUM) and (D.GEBDATUM<=:MAXGEBDATUM))
order by E.KM, N.PLZ, N.ID
</PRE>
Die Where-Klausel erzeuge ich dynamisch je nach Nutzereinstellungen und kann daher variieren.
Gibt es einen besseren Ansatz? Ich könnte z.B. auch die ersten 4 Tabellen abfragen T_NUTZER bis T_ENTFERNUNGEN und danach die Ergebnisse auf die restlichen Bedingungen prüfen?
Oder erzeugt man besser einzelne Views und verknüpft diese dann miteinander?
Was ist der richtige Ansatz?
Danke von
André
ich habe eine IB-Datenbank mit einigen Tabellen und wenigen Testdatensätzen. Select funktiniert schnell und gut aber folgende Abfrage dauert ewig bzw. hängt sich sogar auf...
<PRE>
select distinct N.ID, N.PLZ, E.KM
from T_NUTZER N
left join V_WIRKSAMENUTZERZEITEN W
left join T_PLZ P
left join T_ENTFERNUNGEN E
left join T_DATEN D
left join T_INTERESSE I
left join T_BEWERTUNGEN BN
on (N.ID=W.NUTZER)
on (N.PLZ=P.PLZ)
on (E.PLZ1=:AKTPLZ) and (N.PLZ=E.PLZ2)
on (N.ID=D.NUTZER)
on (N.ID=I.NUTZER)
on (BN.NUTZER2=:AKTNUTZER) and (BN.NUTZER1=N.ID)
where (E.KM<=:MAXKM) and (N.STATUS=30)
and ((N.TYP='D')or (N.TYP='P'))
and ((D.GEBDATUM>=:MINGEBDATUM) and (D.GEBDATUM<=:MAXGEBDATUM))
order by E.KM, N.PLZ, N.ID
</PRE>
Die Where-Klausel erzeuge ich dynamisch je nach Nutzereinstellungen und kann daher variieren.
Gibt es einen besseren Ansatz? Ich könnte z.B. auch die ersten 4 Tabellen abfragen T_NUTZER bis T_ENTFERNUNGEN und danach die Ergebnisse auf die restlichen Bedingungen prüfen?
Oder erzeugt man besser einzelne Views und verknüpft diese dann miteinander?
Was ist der richtige Ansatz?
Danke von
André
Comment