PDA

View Full Version : SQL Optimierung V5R4 Teil II



Seiten : 1 2 [3]

B.Hauser
26-05-14, 15:21
Ich weiß nicht ob das der Grund ist, aber Du hast die Felder mit fixer Länge (CHAR) definiert.
Des weiteren verknüpfst Du die Ergebnisse, ohne das WORK-Feld entsprechend abgetrimmt zu haben.

Deine Performance Probleme könnten auch durch Felder mit fixer Länge mit verursacht worden sein. Besser ist auf alle Fälle mit variablen Längenfeldern zu arbeiten.

@Fuerchau:
Auch wenn nur ein einziger Satz zurückgegeben wird, werden 24 verschiedene ODPs generiert, d.h. 24 x durch die FULL Optimierung gegangen.

Ich hab's gerade mal ausprobiert: 3 Sub-Selects versus 1 CTE --> 5 fache Zeit für die Sub-Selects!

Birgitta

BenderD
26-05-14, 15:31
... das mit den ODPs beim Subselects ist eigentlich ein Dreckeffekt, aber die Group by lösung mit dem wegblenden der jeweils anderen Monaten durch ein case ist ohnehin eleganter. Den Join braucht man dann eigentlich auch nicht, da der Kunde ja in den group Feldern zur Verfügung steht.
Eine Bemerkung (zur dann ebenfalls obsoleten) CTE: das ist nur eine Formulierungshilfe für den Programmierer, die Query engine löst das normalerweise auf und berechnet den access plan neu orientiert an der Ergebnismenge (merkt man zuweilen an abbrechenden Queries wg. ungültiger Feldinhalte). Ich ziehe in den meisten Fällen eine View vor, das verbirgt (wo es geht) einen Teil der Komplexität.

D*B