Einzelnen Beitrag anzeigen

Hoshy

Registriert seit: 27. Apr 2006
32 Beiträge
 
Delphi 7 Architect
 
#13

Re: SQL-Abfrage dauert zu lange

  Alt 28. Nov 2006, 22:50
"OR" Verknüpfungen in Abfragen sind immer schlecht...

Arbeite lieber mir UNION ALL, das dürfte schonmal schneller sein:

SQL-Code:
SELECT kv.*, kr.ID as id_rechnungen, null as id_gutschriften, null as id_lieferscheine
FROM kasse_vorgaenge kv
LEFT JOIN kasse_rechnungen kr ON kv.ID = kr.vorgangsnummer
WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01AND '2006-11-28'

UNION ALL

SELECT kv.*, null as id_rechnungen, kg.ID as id_gutschriften, null as id_lieferscheine
FROM kasse_vorgaenge kv
LEFT JOIN kasse_gutschriften kg ON kv.ID = kg.vorgangsnummer
WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01AND '2006-11-28'

UNION ALL

SELECT kv.*, null as id_rechnungen, null as id_gutschriften, kl.ID as id_lieferscheine
FROM kasse_vorgaenge kv
LEFT JOIN kasse_lieferscheine kl ON kv.ID = kl.vorgangsnummer
WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01AND '2006-11-28'
Leg einen Index über (kv.kundennummer, kv.datum) und jeweils einen über die Vorgangsnummer der anderen Tabellen.

Gruß
Andi
  Mit Zitat antworten Zitat