Forum: Datenbanken
Delphi
by Uwe Raabe,
18. Jun 2020
Das liegt vielleicht daran, dass der Ausdruck für jeden Record ausgewertet werden muss. Ein Index auf B.KDNR und/oder B.Adr hat somit keine Wirkung. Das läuft dann vermutlich auf einen Full Scan hinaus.
Forum: Datenbanken
Delphi
by Uwe Raabe,
8. Jun 2020
OK, und so (ohne reale Daten kann man das hier nicht testen)?
(select SUM(B.Brutto) as Summe from BEL B
where
(B.Art = 'BLUBB' or B.Art = 'BLA') and
((B.Adr > '' and B.Adr = ADR.Adr) or
(B.Adr = '' and B.KDNR = ADR.Adr))
Forum: Datenbanken
Delphi
by Uwe Raabe,
8. Jun 2020
Das würde auch diese Fälle auswerfen: (B.Adr > '' and B.Adr <> ADR.Adr) and (B.KDNR = ADR.Adr)
Forum: Datenbanken
Delphi
by Uwe Raabe,
8. Jun 2020
Was spricht denn gegen das hier?
(select SUM(B.Brutto) as Summe from BEL B
where
(B.Art = 'BLUBB' or B.Art = 'BLA') and
((B.Adr IS NOT NULL and B.Adr = ADR.Adr) or
(B.Adr IS NULL and B.KDNR = ADR.Adr))