PDA

View Full Version : UDFs und Performance



BenderD
25-05-14, 15:34
... ich habe aus gegebenem Anlass einen kleinen Artikel über UDFs auf meine WebSeite gestellt http://www.bender-dv.de/UDF.html

D*B

Fuerchau
26-05-14, 07:53
Sehr schön geschrieben und von mir häufig verwendet.
Dies gilt im übrigen auch für andere kombinierten Feldschlüssel.
Wer kennt nicht das Problem, dass es für "between"-Prüfung 2er Felder so einfach nicht geht?
Die meist verwendete Lösung ist auch hier:
select ... where k1 concat k2 between v1 and v2
Hier wird dann ebenso ein Tablescan durchgefürt.
Die sinnvolle Lösung ist hier dann auch eine Tabelle, die die einzelnen sowie den verbunden Schlüssel enthält mit der dann verjoint werden kann.
Dieter hat auch schon darauf hingewiesen, solche Felder per Trigger automatisch mit zu erzeugen.

Neu in SQL seit (ich glaube V6R1) sind ja sog. "computed Indizes".
Im DDS kennt man das ja bereits mit einfachen Typumwandlungen, SST und CAT über die man einen Index legen kann, der allerdings von SQL ignoriert wird.
Ein Index lässt sich nun auch in SQL per "computed" erstellen.
Wann aber wird dieser Index tatsächlich verwendet?
Genau und nur dann, wenn in der Where-Klausel die identische Formel verwendet wird und der Optimizer keine andere Lösung präferiert.
Da diese Formel ja eher selten ausschließlich verwendet wird glaube ich, dass in 99,99% aller Fälle ein solcher Index nichts bringt.

Außerdem, was heißt identisch?
Manche Berechnungen lassen sich ja auch alternativ lösen, A*B ist eben nicht identisch zu B*A.

AG1965_2
26-05-14, 14:43
Sehr guter Artikel, in der Beispiel-LEDDUH-Tabelle ist ein klitzekleiner Fehler, das echte Datum links ist 1941, die Huddle-Datrümmer sind allerdings alle 1940.

holgerscherer
26-05-14, 16:35
Dieter ist halt seiner Zeit voraus ;-)