[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    empfolene Indices

    Hi *all
    ich habe hier eine komplexe view auf zusammen 6 Dateien.
    Die Dateien haben zwischen 3 und 15 Mio Datensätze.

    Wenn ich nun einen select auf die View mit group mache, sagt mir das Joblog die empfolenen keys.
    Was mich wundert ist.
    Es gibt ein LF mit key1, key2, key3, die Empfehlung ist key3, key2, key1 , also genau umgekehrt.
    Diese Empfehlung kommt nicht aus einem von mir vergebenen Order BY sondern aus den Verknüpfungen. (fast) Alle Dateien haben diesen key1, 2 und 3, (fast) jede Empfehlung ist 3, 2, 1.

    Das hatte ich noch nie.
    hat jemand eine Erklärung?

    Danke
    Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    Ergänzung

    Ich hab die view source kopiert und die verknüpfungen gedreht.
    vorher
    a.key1 = b. key1 and a.key2 = b.key2 and a.key3 = b.key3
    jetzt
    a.key3 = b. key3 and a.key2 = b.key2 and a.key1 = b.key1

    aber das hat NIX gebracht, empfehlung nach wie vor genau andersrum als es die LF's gibt

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Das kann durchaus Sinn machen.
    Nehmen wir an die Häufigkeit der Keyfelder sieht wie folgt aus:
    key1 = 50%
    key2 = 35%
    key3 = 15%

    Dann wäre es sinnvoll einen Index zu haben wo zuerst mal mit key3 mit 15% der Sätze gesucht werden.
    Also der Key wo am wenigsten Treffer vorhanden ist.

    Reihenfolge: key3, key2, key1
    Bei 10 Mio Sätzen werden also zunächst mal nur 1,5 Mio gelesen.
    Mit key2 und key1 werden dann die restlichen aussortiert.

    Reihenfolge: key1, key2, key3
    Da würden zuerst schon mal 5 Mio gelesen werden, da key1 50% aller Sätze beinhaltet.
    Dann erst werden die restlichen aussortiert.

    Das ist jedoch nur eine Vermutung. Da ich weder weiß wie das gesamte SQL aussieht noch wie der innhalt der Tabellen aufgeteilt ist.

    lg Andreas

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Man sollte auch nicht vergessen dass es NUR eine Empfehlung ist.

    Es kann sein, dass diese Empfehlung keine Auswirkung hat wenn du den Index entsprechend erstellst.

    Nur wenn die DB auch einen MTI (temporären Index) erstellt, dann hat die "Empfehlung" wirklich hohes Gewicht.
    Ansonsten ist es besser wenn man die Datenbank und den Inhalt der Tabellen entsprechend Analysiert und darauf aufbauend seine Indexstrategie wählt.

    Je nach dem um was für Daten es sich handelt und wie oft die Tabelle bearbeitet wird (INSERT, DELETE, UPDATE) könnte ein EVI Index oder eine MQT besser sein.

  5. #5
    Registriert seit
    Jul 2011
    Beiträge
    14
    Könnte auch sein dass die Größe der Felder eine Auswirkung hat.
    Key 1 ist ja größer. da möchte er vielleicht zuletzt suchen weil er länger braucht.

    Außerdem möchte er vielleicht bestimme casts aus der Abfrage so selten wie möglich ausführen.

  6. #6
    Registriert seit
    Jul 2011
    Beiträge
    14
    MQTs sind quasi physische views auf mehrere Tabellen. Sie updaten sich je nach einstellungen entweder zu einem bestimmten Zeitpunkt oder immer sobald sich eine der Tabellen ändert.

    Vorteil: Bei abfragen schneller, da das select auf mehrere Tabellen nicht neu ausgeführt werden muss.
    Nachteil: Verbrauchen natürlich Speicher.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... meine Glaskugel ist gerade defekt und Kaffeesatz habe ich auch gerade keinen zur Hand. Aus dem hohlen Bauch:
    - erst mal alle Debug Messages durcharbeiten, was ihr an den vorhandenen Indexen nicht schmeckt.
    - zuweilen kann ein Order by ihr auf die Sprünge helfen
    - ausprobieren, was sie mit den vorgeschlagenen Indexen hinkriegt (oder ob sie sich für ein anderes Paar Schuhe entscheidet...)

    D*B

    PS: EVIs sind für join und group by (wie in den meisten anderen Fällen) völlig nutzlos - ein typisches Gag Feature des Marketings.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Man(n) müsste sich den Zugriffsplan anschauen den die DB derzeit verwendet.
    Du kannst dir im Navigator mit Rechts-Klick auf "Datenbanken" den Job anschauen der die Abfrage durchführt --> dann Details --> und auf Visual Explain.

    Dann könntest du vielleicht erkennen warum er diese Reihenfolge vorschlägt.

    Alles was > ein paar Sekunden und überhaupt bei über 1 Stunde braucht, liegt das Problem entweder an der Abfrage selbst.
    Oder an gewissen Datenbankeinstellungen (SRTSEQ=*HEX?, QAQQINI, Logische File im FROM statt Phyische usw.)

    Und was MQTs betrifft ist es so wie Obv gesagt hat.
    Nur dass es derzeit auf der IBM i noch nicht möglich ist ein automatisches Refresh zu machen. Das gibt es nur bei DB2 LUW.
    MQTs sind optimal, wenn die benötigten Daten auch ein paar Stunden oder Minuten alt sein dürfen.
    Du kannst sie sowohl über eine als auch mehrere Tabellen anlegen.
    Damit verlagerst du die Zeit für das Sammeln der Daten auf einen eigenen JOB der je nach Interval die Vorselektion startet.

  9. #9
    Registriert seit
    Jul 2011
    Beiträge
    14
    Nur dass es derzeit auf der IBM i noch nicht möglich ist ein automatisches Refresh zu machen.
    REFRESH IMMEDIATE funktioniert nicht?

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Ok,
    die Leitung zum Kunden war eben weg, das Statement ist abgebrochen.

    also hab ich es in eine Source kopiert,
    create table davor, with data dahinter und einen runsqlstm submittet.
    nach 4 Minuten hatte ich eine richtig gefüllte datei!!!

    also strsql
    select ... group ...

    Nix geht, aber auch gar nix .
    Ich verstehe das nicht.

    Die analyse mit v.expl. werd ich versuchen (einmal hab ich das ja schon für ein anderes prob. gemacht ... )

    @Dieter
    die geforderten indices kann (darf) ich nicht 'mal eben' anlegen.
    Der Grund warum er die existierenden Pfade nicht nimmt ist lt Joblog: dauer zu lange
    Order by werd ich versuchen, dachte das macht sql automatisch intern bei group by. die key1, 2, 3 Felder sind übrigens nicht die group Felder)
    @glaskugel
    ja das kenn ich, meine ist auch dauern defekt.

    danke und Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wenn es im Batch schneller läuft, schau dir die Einstellungen im STRSQL an.
    Sortierfolge . . . . . . . . . *HEX
    Datenkopie zulässig . . . . . *YES

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Obv Beitrag anzeigen
    REFRESH IMMEDIATE funktioniert nicht?
    Derzeigt gibt es nur REFRESH DEFERRED.
    REFRESH IMMEDIATE gibts nur bei DB2 LUW.
    War auch schon mit Common Europe im engeren Kontakt um REFRESH IMMEDIATE auch auf der AS/400 zu unterstützen.

Similar Threads

  1. zu viele Indices bei ODBC zugriff
    By ILEMax in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 20-03-12, 10:24
  2. Query mit Eingangsfolge
    By Frank Ziegler in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 10-12-06, 10:21
  3. Index statt LF-was bedeutet das?
    By deni87991 in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 07-08-06, 16:42
  4. SQL-View Systemname
    By HPKahn in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 17-05-06, 20:22
  5. Ferne SQL Analyse / Performance
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-08-05, 08:56

Berechtigungen

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