[NEWSboard IBMi Forum]

Thema: Create Index

  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    Create Index

    Hallo,

    ich lese mit Sql in einem Sfl ein.
    Leider braucht das einlesen sehr lange.

    Vor langer Zeit habe ich mir mal notiert wie man einen Index erstellen kann:
    Code:
    CREATE INDEX MYLIB/INDEXNAMEN 
    ON MYLIB /MYFILE (Feld) 
    WITH 1 DISTINCT VALUES
    Kann mir jemand bitte erklären wie ich für folgendes Statement einen Index erstelle?
    Code:
    SELECT X3KZ4, X3ZDAT, X3FDAT, 
    COUNT(DISTINCT(X3ORT1)),             
    COUNT(DISTINCT(X3 ORT2)), 
    COUNT(Y3ART1)       
    FROM ZX3F, ZY3F WHERE X3NUMM = Y3NUMM  
    GROUP BY X3KZ4,  X3FLD5, X3ZDAT, X3FDAT 
    ORDER BY  X3KZ4, X3ZDAT DESC, X3FDAT
    Dank im Voraus

    Tarki

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die einfachste Methode ist immer vor dem SQL einen STRDBG auszuführen und den Hinweisen des Joblogs zu folgen.
    Die Frage ist, warum du mit ZY3F joinst ohne ein Feld zu benötigen.
    Wenn Y3NUMM nicht eindeutig ist werden erheblich mehr daten Verarbeitet als benötigt.
    Du benötigst auf jeden Fall einen Index über Y3NUMM.
    An Stelle des Joins wäre dann ein
    where exists (select * from ZY3F where X3NUMM=Y3NUMM)
    vollkommen ausreichend.
    Für ZX3F brauchst du keinen Index, da du ja keine Bedingung hast und somit einen Tablescan provozierst.
    Ob der SQL mit einem Index über die Group-Felder schneler ist kann ich nicht sagen.
    Ggf. hilft da ein Index über die Order-Felder.
    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

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo,

    ich muss aber die Anzahl der Artikel zählen: COUNT(Y3ART1)
    deshalb kann ich die where exists Klausel nicht verwenden.
    Ich werde mal debuggen und den Joblog lesen.

    Danke

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Stimmt, habe ich überlesen.
    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
    Apr 2012
    Beiträge
    360
    Im joblog habe ich leider nicht rauslesen können
    :
    :
    1 Zeilen von Cursor CSRC1 abgerufen.
    ODP wiederverwendet.
    ODP nicht gelöscht.
    Eingebettetes SELECT beendet.
    ODP wiederverwendet.
    ODP nicht gelöscht.
    Eingebettetes SELECT beendet.
    ODP wiederverwendet.
    ODP nicht gelöscht.
    :
    :
    Wie müsste eigentlich der Index für die order Felder lauten?
    Habe leider noch nie einen Index erstellt.
    Erstelle ich den nur einmalig?

    Danke im Voraus

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da müssen noch erheblich mehr Hinweise davor im Joblog stehen.
    Den Create Index hats du ja schon oben stehen.
    Benötigst du mehr als ein Feld sind diesen in Klammern mit Komma getrennt aufzuführen.
    Und ja, ein Index wird nur einmal erstellt und ist dann permanent.
    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

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    An der Stelle ist das Kind schon in den Brunnen gefallen.
    Du musst weiter nach oben gehen, wo die Zugriffswege geprüft werden.
    Sofern ein Zugriffsweg empfohlen ist, wird dies im Joblog angezeigt. Mit F1 erhälst Du dann die Detail-Informationen.
    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

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Du kannst das ganze auch im iSeries Navigator machen. Dort hast du es etwas hübscher dargestellt.
    Und dort siehst du dann auch wo genau es länger dauert (= wo ein Index nötig ist).

    lg Andreas

  9. #9
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo Andreas,
    leider benutzte ich den Navigator nicht, unter welchem Punkt finde ich das?

    lg

    Tarki

Similar Threads

  1. create collection, abeer kein Journaling?
    By Sascha Storzum in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 19-08-02, 12:26
  2. CREATE TABLE
    By Willi1 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-05-02, 08:38
  3. Antworten: 2
    Letzter Beitrag: 26-09-01, 15:25
  4. UNION/UNION ALL beim CREATE VIEW
    By KB in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 24-07-01, 15:43
  5. DATFMT bei CREATE TABLE
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-03-01, 13:44

Berechtigungen

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