[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2003
    Beiträge
    41

    SQL - optimize for xxx rows

    Hallo,

    Habe versucht mein interaktives rpg programm zu tunen (dynamisches sql mit cursor) und bei declare cursor 'for read only' und 'optimize for xxx rows' hinzugefügt. das erlaubt mir bereits seu nicht, kompillieren kann ich auch nicht. woran kann das liegen? geht das nur bei statischem sql? wie kann ich sonst ein dynamisches sql tunen?
    mfg roman

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von roko
    Hallo,

    Habe versucht mein interaktives rpg programm zu tunen (dynamisches sql mit cursor) und bei declare cursor 'for read only' und 'optimize for xxx rows' hinzugefügt. das erlaubt mir bereits seu nicht, kompillieren kann ich auch nicht. woran kann das liegen? geht das nur bei statischem sql? wie kann ich sonst ein dynamisches sql tunen?
    mfg roman
    Die FOR READ ONLY und die FOR OPTIMIZE OF Klausel sind Bestandteile des SELECT- und nicht des DECLARE-Statements.
    Die Angaben müssen in den Command-String mit aufgenommen werden.

    PHP-Code:
    D Cmd             S            256     
     
    *------------------------------------------------------
     /
    Free                                          
       Cmd 
    'Select Feld1, Feld2, Feld3 From  MYFILE +              
                 For Read Only Optimize for 5 Rows'
    ;   
     /
    End-Free                                      
     
    *                                              
    C/EXEC SQL Prepare CmdSql From :Cmd              
    C
    /END-EXEC                                      

    C
    /EXEC SQL Declare Csr1 Cursor For CmdSql      
    C
    /END-EXEC 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Feb 2003
    Beiträge
    41
    Hallo Brigitta,

    Vielen Dank für Deine Antwort, ich habe schon gehofft, dass Du dich auf meine Anfrage meldest. Habe sofort umgesetzt, funktioniert auch, aber leider nicht so wie ich mir das vorgestellt habe / ich glaube, ich habe 'optimize for..' falsch verstanden. wenn ich eine geringe Anzahle Sätze auswähle ist die Performance eine Spur besser als vorher, wenn aber eine Unmenge an Datensätzen daher kommt, sind die Antwortszeiten um vielefaches grösser. ich probiere es noch mit erstellen einer join-file - oder kannst Du mir sonstige Tipps geben?
    Auf jeden Fall vielen Dank.
    mfg Roman

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von roko
    Hallo Brigitta,

    Vielen Dank für Deine Antwort, ich habe schon gehofft, dass Du dich auf meine Anfrage meldest. Habe sofort umgesetzt, funktioniert auch, aber leider nicht so wie ich mir das vorgestellt habe / ich glaube, ich habe 'optimize for..' falsch verstanden. wenn ich eine geringe Anzahle Sätze auswähle ist die Performance eine Spur besser als vorher, wenn aber eine Unmenge an Datensätzen daher kommt, sind die Antwortszeiten um vielefaches grösser. ich probiere es noch mit erstellen einer join-file - oder kannst Du mir sonstige Tipps geben?
    Auf jeden Fall vielen Dank.
    mfg Roman
    Hallo Roman,

    1. FOR OPTIMIZE OF - kann die Zeit, die der Optimizer zum Suchen des Optimalen Zugriffs-Weges verwendet, beeinflussen.

    2. Eine JOIN-FILE anzulegen und dann im SQL-Statement zu verwenden bringt überhaupt nichts! Der Query Optimizer entnimmt der Join-File nur die Join- und Select/Omit-Informationen. Anschliessend wird das Query neu geschrieben und für jede verknüpfte Datei ein eigener Zugriffs-Weg gesucht. Eine SQL-View ist in diesem Fall eine bessere Lösung.
    (Aber auch hier wird für jede verknüpfte Datei ein eigener Zugriffs-Weg gesucht.)
    Wir habe die Erfahrung gemacht, dass eine Join-File die langsamste Verarbeitung ist, als nächstes folgt der direkte Join im Select-Statement und die schnellste Variante ist SQL-Views zu verwenden.

    3. Du musst Dein SQL analysieren, entweder über STRDBG und anschliessend das Joblog anschauen oder besser noch über den iSeries Navigator / Visual Explain.
    In beiden Fällen werden fehlende Indices vorgeschlagen. Nur über entsprechende Indices können SQL-Statements getuned werden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo Roman,

    wieder mal ein typisches Beispiel dafür, dass Fragen ohne verständliche Erläuterung worum es wirklich geht, völlig sinnlos sind!!! Wenn ich bei Optimize for eine sehr große Anzahl angebe, dann ist ein full Table scan das schnellste, dauert aber für den ersten Satz sehr lange.

    mfg

    Dieter Bender

    Zitat Zitat von roko
    Hallo Brigitta,

    Vielen Dank für Deine Antwort, ich habe schon gehofft, dass Du dich auf meine Anfrage meldest. Habe sofort umgesetzt, funktioniert auch, aber leider nicht so wie ich mir das vorgestellt habe / ich glaube, ich habe 'optimize for..' falsch verstanden. wenn ich eine geringe Anzahle Sätze auswähle ist die Performance eine Spur besser als vorher, wenn aber eine Unmenge an Datensätzen daher kommt, sind die Antwortszeiten um vielefaches grösser. ich probiere es noch mit erstellen einer join-file - oder kannst Du mir sonstige Tipps geben?
    Auf jeden Fall vielen Dank.
    mfg Roman
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •