-
SQL: Ausführungsverhalten einer Funktion in einem CASE-Statement
Hallo,
ich habe bei einer SQL-Abfrage in einem ELSE-Zweig eines CASE-Ausdruckes die Ausführung einer SQL-Funktion, die eine sehr zeitintensive RPG-Funktion aufruft:
SELECT ....
CASE WHEN MDMUS1<>'' THEN MDMUS1 ELSE MOD_getMKZ(afpmdt,afpmod,aumpgm,afpbsd) END
... FROM ...
Bedingt durch die Angabe der Funktion in dem ELSE-Zweig war ich davon ausgegangen, das die Funktion nur dann aufgerufen wird, wenn der ELSE-Zweig auch zur Anwendung kommt. Durch den I/O-Zähler in der Anzeige der offenen Dateien kann ich aber feststellen, das die Funktion für jeder Zeile der Abfrage ausgeführt wird und dadurch wird die Abfrage sehr langsam wird (167198 zu 12417 notwendige Aufrufe).
Hat jemand schon Erfahrungen mit diesem Thema gemacht? Gibt es eine Möglichkeit dieses Verhalten abzustellen?
M.Withake
-
Hallo,
ich denke, das man das nicht beeinflussen kann, was der Query Pessimizer sich da so zurecht denkt. Als Work around könnte man den Modus mit übergeben und wenn da wirklich was kommt, selbiges stumpf zurück geben ohne was aufzurufen.
mfg
Dieter Bender
Zitat von mwithake
Hallo,
ich habe bei einer SQL-Abfrage in einem ELSE-Zweig eines CASE-Ausdruckes die Ausführung einer SQL-Funktion, die eine sehr zeitintensive RPG-Funktion aufruft:
SELECT ....
CASE WHEN MDMUS1<>'' THEN MDMUS1 ELSE MOD_getMKZ(afpmdt,afpmod,aumpgm,afpbsd) END
... FROM ...
Bedingt durch die Angabe der Funktion in dem ELSE-Zweig war ich davon ausgegangen, das die Funktion nur dann aufgerufen wird, wenn der ELSE-Zweig auch zur Anwendung kommt. Durch den I/O-Zähler in der Anzeige der offenen Dateien kann ich aber feststellen, das die Funktion für jeder Zeile der Abfrage ausgeführt wird und dadurch wird die Abfrage sehr langsam wird (167198 zu 12417 notwendige Aufrufe).
Hat jemand schon Erfahrungen mit diesem Thema gemacht? Gibt es eine Möglichkeit dieses Verhalten abzustellen?
M.Withake
-
Es gibt ein PTF
Wir benutzen iseries V 5.4. Auch wir hatten ein solches Problem mit dem "CASE".
IBM hat aufgrund unserer Meldung ein PTF MF45019/MF45020 erstellt. Dieses beseitigt das Problem für die SQE. Es tritt jedoch weiterhin für die CQE auf und IBM beabsichtigt nicht es für die CQE zu fixen.
Da wir auch noch weitere Bugs im DB2 gefunden haben, die ebenfalls behoben wurden, sollte man auf jeden Fall den neuesten PTF-Stand auf der Maschine haben.
Similar Threads
-
By steven_r in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 08-08-06, 09:34
-
By klausgkv in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 08-06-06, 13:47
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 01-06-06, 12:16
-
By GHoffmann in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 07-07-05, 09:18
-
By juergenkemeter in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 15-11-04, 12:15
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks