Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Performance-Prob mit Subselect

  Alt 21. Jan 2008, 16:01
Datenbank: FB • Version: 1.5, 2.0 • Zugriff über: egal
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
Heiko
  Mit Zitat antworten Zitat