-
SQL-Laufzeit durch Funktion erheblich länger?
Hallo liebe SQL-Spezialisten,
ein Kollege hat eine nette Funktion programmiert, das aus 3 numerischen Feldern für JJJJ, MM, TT ein Zeichenfeld im ISO-Format macht. Also z.B. JMT2DATE(2011, 4, 1) würde '2011-04-01' liefern.
Das funktioniert auch prima, nur die Laufzeit ist katastrophal schlecht.
Code:
with x as (select JMT2DATE(TSL10J, TSL10M, TSL10T) from SSLTST)
select count(*) from x
braucht für 100000 Sätze ca 1 Minute, während
Code:
with x as (select digits(TSL10J) concat '-' concat digits(TSL10M) concat '-' concat TSL10T from SSLTST)
select count(*) from x
deutlich unter 1 Sekunde benötigt!
(Das "with x as ..." habe ich nur eingebaut, um die Laufzeit prüfen zu können)
Haben Funktionen so einen Overhead, oder ist die vielleicht nur ungeschickt programmiert?
Vieleicht könnt Ihr mal einen Blick auf die Funktion werfen:
Code:
CREATE FUNCTION MHK/JMT2DATE(p_JJ dec(4, 0),
p_MM dec(2, 0),
p_TT dec(2, 0))
RETURNS CHAR(10)
LANGUAGE SQL
SPECIFIC JMT2DATE1
func1_lab:
BEGIN
DECLARE s_date CHAR(10);
DECLARE InvalidDate CONDITION FOR '22007';
DECLARE EXIT HANDLER FOR InvalidDate
BEGIN
RETURN '1900-01-01';
END;
IF p_JJ IS NULL OR p_jj = 0 THEN
RETURN '1900-01-01';
END IF;
IF p_JJ < 50 THEN
SET p_JJ = 2000 + p_JJ;
END IF;
IF p_JJ < 100 THEN
SET p_JJ = 1900 + p_JJ;
END IF;
SET s_date = trim(char(p_JJ)) concat '-'
concat trim(char(p_MM)) concat '-'
concat trim(char(p_TT)) ;
RETURN s_date;
END
drop specific function mhk/JMT2DATE2
CREATE FUNCTION MHK/JMT2DATE(p_JJ INTEGER,
p_MM INTEGER,
p_TT INTEGER )
RETURNS CHAR(10)
LANGUAGE SQL
SPECIFIC JMT2DATE2
func2_lab:
BEGIN
DECLARE s_date CHAR(10);
DECLARE InvalidDate CONDITION FOR '22007';
DECLARE EXIT HANDLER FOR InvalidDate
BEGIN
RETURN '1900-01-01';
END;
IF p_JJ IS NULL OR p_jj = 0 THEN
RETURN '1900-01-01';
END IF;
IF p_JJ < 50 THEN
SET p_JJ = 2000 + p_JJ;
END IF;
IF p_JJ < 100 THEN
SET p_JJ = 1900 + p_JJ;
END IF;
SET s_date = trim(char(p_JJ)) concat '-'
concat trim(char(p_MM)) concat '-'
concat trim(char(p_TT)) ;
RETURN s_date;
END
drop specific function mhk/JMT2DATE3
CREATE FUNCTION MHK/JMT2DATE(p_Date INTEGER)
RETURNS CHAR(10)
LANGUAGE SQL
SPECIFIC JMT2DATE3
func3_lab:
BEGIN
DECLARE s_date CHAR(10);
DECLARE InvalidDate CONDITION FOR '22007';
DECLARE EXIT HANDLER FOR InvalidDate
BEGIN
RETURN '1900-01-01';
END;
IF p_Date IS NULL OR p_Date = 0 THEN
RETURN '1900-01-01';
END IF;
SET s_date = substr(digits(p_Date), 1, 4) concat '-' concat
substr(digits(p_Date), 5, 2) concat '-' concat
substr(digits(p_Date), 7, 2);
RETURN s_date;
END
drop specific function mhk/JMT2DATE4
CREATE FUNCTION MHK/JMT2DATE(p_Date decimal(8, 0) )
RETURNS CHAR(10)
LANGUAGE SQL
SPECIFIC JMT2DATE4
func3_lab:
BEGIN
DECLARE s_date CHAR(10);
DECLARE InvalidDate CONDITION FOR '22007';
DECLARE EXIT HANDLER FOR InvalidDate
BEGIN
RETURN '1900-01-01';
END;
IF p_Date IS NULL OR p_Date = 0 THEN
RETURN '1900-01-01';
END IF;
SET s_date = substr(digits(p_Date), 1, 4) concat '-' concat
substr(digits(p_Date), 5, 2) concat '-' concat
substr(digits(p_Date), 7, 2);
RETURN s_date;
END
Fällt Euch dazu was ein?
Mit Funktion ist es schon besser lesbar, aber so arg die Laufzeit strapazieren darf es auch nicht.
Gruß,
Christian
Similar Threads
-
By mwithake in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-08-09, 14:57
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 01-06-06, 12:16
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By GHoffmann in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 07-07-05, 09:18
-
By Stefan_R in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-01-02, 16:08
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