View Full Version : Opnqryf
Sven Schneider
27-11-03, 09:01
Um ein Missverständis auszuräumen :
OPNQRYF und SQL-Select nutzen die selbe Classice Query-Engine (CQE).
Damit gibt es auch keine Performence-Unterschiede bei gleichen Abfragen.
Lediglich ab V5R2 wird für bestimmte SQL-Abfragen eine neue optimierte SQL Query-Engine (SQE) benutzt.
Dies trifft bei SQL definitiv nicht auf Abfragen mit Like in der where-Klausel zu!!!
siehe :
http://www-1.ibm.com/servers/eserver/iseries/db2/sqe.html
http://www-912.ibm.com/n_dir/nas4apar.NSF/1be1a5b61b213a6c86256c23007048f4/61ffe88d56a943ed86256c9b0041fbeb?OpenDocument&Highlight=0,II13486
Sven
@sven
Dein 1. Link kann leider nur von Pro-Kunden angesehen werden.
Das Problem der Laufzeit betrifft ja auch nicht die LIKE-Funktion sondern die XLATE-Funktion auf die die Where-Bedingung wirken soll.
Da mittels XLATE erst mal alle Sätze übersetzt werden müssen um dann ggf. keine Sätze zu finden halte ich für fraglich bezüglich eines performanten Designs.
Mittels einer SORTSEQUENCE nach Sprache spare ich mir die Like-Klausel da ich mit %RANGE bzw BETWEEN arbeiten kann. Hier ist dann ein Zugriffspfad verwendbar.
@Fuerchau
Es ist mir klar, daß OPNQRYF verwendet intern die selben Methoden wie SQL oder Query.
Aber die Datei hat lediglich 65000 Sätze, sodaß ich auf ne 820
keine Problemen habe. Auch wenn jedesmal ein Zugriffspfad aufgebaut wird. Ich benutze die Funktion %WLDCRD Bzw.
die Funktion *CT
Gruss
Thierry
Aber stelle Dir mal den User vor, wenn die Antwortzeit statt 5 Sekunden <1 Sekunde beträgt ?
Sven Schneider
27-11-03, 20:11
@Fuerchau
Ist schon klar.
Aber die Ausage war ja :
>Bedenke aber, dass dieser Zugriff nicht der schnellste sein wird !
Drum benutze ich OPNQRYF
Bedeutet in diesem Fall aber (wg. XLATE), daß SQL ggf. sogar schneller ist.
Sven
hallo zusammen,
bin gerade auf das gleiche problem gestossen wie. Was ist gemeint mit QCASE256 patchen ?
gruß
christian
QCASE256 ist ein *TBL-Objekt (WRKTBL).
Man sollte es nicht patchen sondern eine eigene Tabelle erstellen (CRTTBL).
danke für den tip fuerchau, aber damit habe ich bisher noch nie was zu tun gehabt. was muss ich genau tun ? kann ich die qcase256 kopieren und dann einfach verändern ? ich gehe mal davon aus dass ich die hexcodes der kleinen umlaute auf die hexcodes der großen umlaute umswitchen muss, oder ?
schonmal danke im voraus für die hoffentlich hilfreiche antwort.
christian
Lass das mit den TBL-Objekten besser sein,, da dies mit der QCASE256 nicht CCSID-unabhängig ist.
Verwende hierzu lieber ein SQLRPG/SQLRPGLE:
c/exec sql
c/+ set :var = upper(:var)
c/end-exec
Dies funktionier mit jeder CCSID zur Laufzeit.
.... auch wenn du nicht so dafür bist; ich mache das gleiche wie thimi: in einem CL einen OPNQRY mit %WLDCRD. bisher hatte ich die QSYSTRNTBL im Einsatz, jetzt haben wir aber auf groß-/kleinschrift umgestellt und da funktioniert es leider nicht mehr. also bitte, bitte einen tip wie ich am schnellsten zur gewünschten *TBL komme ????? danke
christian