Hallo #,
ich habe folgende Tabellen
project: project_id, projekt_state
pos: pos_id, project_id, pos_state
booking: booking_id,project_id
except_projects: except_projects:_id,project_id
in
projects stehen Projekte (wer hätte das gedacht),
in
pos stehen Projekt-Positionen,
in
booking Projekt-Buchungen.
Ich möchte jetzt alle Buchungen der Projekte/Positionen, die nicht in
except_projects stehen
SQL-Code:
Select Booking.booking_id,Booking.project_id From Booking
Join Project On Project.project_id=Booking.project_id
Join Pos On Pos.project_id=Project.project_id
where Booking.project_id not in
(Select except_projects.project_id From except_projects)
es werden noch Stati abgefragt (project_state, pos_state)
Hm, soweit so gut,
jetzt habe ich aber ein massives Performance-Problem.
10 sec. Prepare, 10 sec. Fetch (lokal)
except_projects: 160 Einträge, aber 9 Mio. ausgelesen
project:: 195 Einträge, 80.000 mal ausgelesen
pos:: 4000 Einträge, 80.000 mal ausgelesen
Im Plan sind nur Index-Scans, kein natural.
Wie könnte ich die Abfrage ändern ?
Edit:
=====
Das ganze als SP dauert komplett nur 3 Sekunden,
also wieder SP basteln ;(
Heiko