[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Die Optimierung geht sowohl von der where- als auch von der order by-Klausel des Select's aus, was für den 2. SQL-Befehl "update ... where" ebenso gilt.
    Der Debug-Modus (bzw. QAQQINI-Option) geben im Joblog empfohlene Zugriffspfade aus.

    Der "Select ... for update of ..." ist für diesen Fall sicherlich das eleganteste, da auf der aktuelle Tabelleneintrag (Satz) ohne Neupositionierung verwendet wird.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Jul 2003
    Beiträge
    338
    Hallo Dieter, vielen Dank für die Unterstützung.

    Aus dem Joblog war erkennbar, dass kein bestender Zugriffspfad nutzbar war.
    Ich habe daraufhin ORDER BY ganz rausgenommen, da ich keine Sortierung benötige. Das war allerdings ein Fehler, da dann wohl alle Sätze trotz SELECT-Auswahl genommen werden. Dann habe ich ORDER BY nur mit dem Firmenschlüssel angegeben, für das genügend log. Dateien vorhanden sind.

    Beim UPDATE habe ich WHERE CURRENT OF angegeben.

    Das beides hatte dann zum Ergebnis, dass bei einer Auswahl von 4800 Datensätzen aus einem Topf von 500000 Sätzen die Verarbeitungszeit von 2 Std. reduziert wurde auf ca. 10 Sekunden. !!


    Hallo Baldur,
    was bedeuter " Select for update of".
    Ist das eine SQL-Anweisung oder nur als Begriff zu verstehen, dass upgedatet wird wie gelesen wird. ?

    mfg. Ludger

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Ludger,

    Du kannst das jetzt so lassen, das ist ein guter Wert. Normalerweise sollten alle elementaren Zugriffe (lesen Satz pro Datei, Update etc.) im Millisekunden Bereich liegen, je nach Hardware. Alles was signifikant langsamer ist, lässt sich mit einer entsprechenden Analyse schneller machen, je nach Konstellation mit Datenbankmitteln (Index anlegen), Software technisch (so wie bei Dir zum Beispiel) oder oft auch Hardware (Platte, CPU)

    Dieter Bender
    (der sowas manchmal auch für Geld macht)

    Zitat Zitat von loeweadolf
    Hallo Dieter, vielen Dank für die Unterstützung.

    Aus dem Joblog war erkennbar, dass kein bestender Zugriffspfad nutzbar war.
    Ich habe daraufhin ORDER BY ganz rausgenommen, da ich keine Sortierung benötige. Das war allerdings ein Fehler, da dann wohl alle Sätze trotz SELECT-Auswahl genommen werden. Dann habe ich ORDER BY nur mit dem Firmenschlüssel angegeben, für das genügend log. Dateien vorhanden sind.

    Beim UPDATE habe ich WHERE CURRENT OF angegeben.

    Das beides hatte dann zum Ergebnis, dass bei einer Auswahl von 4800 Datensätzen aus einem Topf von 500000 Sätzen die Verarbeitungszeit von 2 Std. reduziert wurde auf ca. 10 Sekunden. !!


    Hallo Baldur,
    was bedeuter " Select for update of".
    Ist das eine SQL-Anweisung oder nur als Begriff zu verstehen, dass upgedatet wird wie gelesen wird. ?

    mfg. Ludger
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der fehlende "order by" war sicherlich nicht der Grund, dass du alle Sätze gelesen hast ("order" ist schließlich nur für den Sort und nicht für die Auswahl verantwortlich). Vielleicht hattest du die Where-Klausel gleich mit entfernt ?

    update-clause
    for update [of column-name, ...]
    The UPDATE clause identifies the columns that can be updated in a subsequent positioned UPDATE
    statement. Each column-name must be unqualified and must identify a column of the table or view
    identified in the first FROM clause of the fullselect. If the UPDATE clause is specified without column
    names, all updateable columns of the table or view identified in the first FROM clause of the fullselect are
    included. The clause can appear either before or after an accompanying optimize-clause.
    The FOR UPDATE OF clause must not be specified if the result table of the fullselect is read-only (for
    more information see “DECLARE CURSOR” on page 374), if the FOR READ ONLY clause is used, or if
    the SCROLL keyword is specified without the DYNAMIC keyword on the DECLARE CURSOR statement.
    Positioned UPDATE statements identifying the cursor associated with a select-statement can update all
    updateable columns, if:
    v The select-statement does not contain one of the following:
    – An UPDATE clause
    – A FOR READ ONLY clause
    – An ORDER BY clause
    v The DECLARE CURSOR statement does not contain a SCROLL keyword without the DYNAMIC
    keyword.
    The UPDATE clause is a performance option that is not part of ISO/ANSI SQL.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    @Baldur ein order by verhindert in jedem Fall einen Full Table scan, es kann also durchaus sein, dass das Weglassen des order by diese Wirkung hat. Im vorliegenden Fall hätte dann eine Fehleinschätzung des Query Optimizers über die Selektivität der Where Klausel vorgelegen, könnte ein Fall für einen Encoded Vector Index sein.

    mfg

    Dieter
    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
  •