[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    117

    Index-Advisor und Primary Key

    Hallo zusammen,

    wir haben eine SQL-Tabelle mit einem Primary-Key, für die der Index-Advisor einen Index-Vorschlag über die Primary-Key-Spalte vorschlägt (Empfehlungshäufigkeit 13 Mio).

    Jetzt habe ich ein paar Fragen:
    Warum reicht der durch den Constraint generierte Index nicht aus?
    Warum einen weiteren manuell erstellten Index über die Primary-Key-Spalte?

    Noch ein Hinweis:
    Der Indextyp des Vorschlags ist "Codierter Vektor" und unterscheidet sich dadurch vermutlich vom generierten Index des Constraints.

    Kann ich den Indexvorschlag des Advisors einfach übernehmen? Zwei Indizes über die gleiche Spalte fühlt sich nicht richtig an.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Die Frage ist doch, ob die SQL's den PrimaryIndex verwenden oder nicht.
    Ich habe auch schon Vorschläge gesehen, dass die Reihenfolge der Felder anders herum vorgeschlagen wurde und der Index trotzdem verwendet wurde.

    Leider ist es so, dass die Vorschläge dann ab und an zur Laufzeit tatsächlich nicht angenommen wurden.
    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
    Aug 2001
    Beiträge
    2.869
    Primary Key werden in Form eines Binary Radix Tree Indexes, also eines Indexes, der auf einer Baum-Struktur basiert über die die Schlüssel-Werte gefunden werden. Unter oder hinter den Schlüssel-Werten befindet sich eine Bit-Map, in der für jeden Satz ein Indikator hinterlegt ist, der je nachdem ob der Satz den Schlüssel-Wert enthält auf an oder aus gesetzt wird.

    Codierte Indices (oder Encoded Vector Indices) haben einen anderen Aufbau. Sie bestehen aus einer Symbol-Tabelle, in der alle Schlüssel-Werte hinterlegt sind. Jedem Schlüssel wird ein eindeutiger Code zugeordner. In dem Vektor, dem zweiten Bestandteil des Indexes, wird jeder Satz-Adresse der entsprechende Code zugewiesen. Wird nach einem bestimmten Schlüssel gesucht, wird der Code festgestellt und dann der Vektor entsprechend ausgelesen.

    Encoded Vektor Indices werden normalerweise zum schellen Ermitteln von ca. 20-70% der Datensätze aus einer Tabelle verwendet oder auch in Verbindung mit Techniken wie Lock Ahead Predicate Generation (LPG).
    ... deshalb wundert mich eigentlich, dass für einen Primary Key ein Encoded Vector Index vorgeschlagen wird!

    Soweit zur Theorie.
    Die Frage ist, laufen Deine Abfragen gegen diese Tabelle in einer vertretbaren Zeit ab?
    Dazu solltes Du die Abfragen ermitteln und dann mit Hilfe von Visual Explain analysieren.
    Sofern die Abfragen in einer vertretbaren Zeit ausgeführt werden, würde ich die Advices einfach löschen.

    Du kannst aber auch mal spasseshalber einen entsprechenden (Encoded Vector) Index anlegen und beobachten, was sich dann tut.
    Am besten machst Du vorher und nachher (nachdem du einige Abfragen ausgeführt hast) einen Plan Cache Snap Shot und vergleichst dann die Ergebnisse.
    Alternativ kannst Du auch für vorher und nachher einen Datenbanken-Monitor (Performance Monitor) starten und dann beide vergleichen.
    ACS (Access Client Solutions) bietet dafür entsprechende Tools. (Notfalls geht es auch mit Client Access).

    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

  4. #4
    Registriert seit
    Oct 2003
    Beiträge
    117
    @Fuerchau:
    Danke für das Feedback.
    Ob der PrimaryIndex verwendet wird, habe ich mich dann auch gefragt.
    Würde mich aber sehr wundern, wenn nicht.

    @Birgitta:
    Danke für die ausführliche Antwort und den Crash-Kurs zu Indextypen!
    Ich werde erst einmal wie vorgeschlagen die Abfragen ermitteln und analysieren.
    Wenn da nichts Sinnvolles herauskommt, werde ich den Codierten Index anlegen.

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Allrounder Beitrag anzeigen
    wir haben eine SQL-Tabelle mit einem Primary-Key, für die der Index-Advisor einen Index-Vorschlag über die Primary-Key-Spalte vorschlägt (Empfehlungshäufigkeit 13 Mio).
    ... einen encoded Vector Index über einen Teil eines aus mehreren Feldern bestehenden primary index zu erstellen kann Sinn machen, da der Optimizer dann zusätzliche Informationen über die Verteilung und Lokation der Werte erhält. Einen encoded Vector Index über eine Spalte mit vielen Ausprägungen und geringer Dichte macht keinen Sinn, beim kompletten primary Key wäre das geradezu Unfug und ich würde mal Software defekt reklamieren, bzw. die database PDFs aktualisieren.
    Im übrigen muss man auch beachten, dass jeder Index bei inserts und deletes, zuweilen gar bei updates, workload erzeugt und gerade EVIs, die vom IBM marketing und deren followers weit über ihren Nutzen hinaus angepriesen werden bringen selten was.

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

  6. #6
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von BenderD Beitrag anzeigen
    ... Einen encoded Vector Index über eine Spalte mit vielen Ausprägungen und geringer Dichte macht keinen Sinn...
    Nachdem ich jetzt tiefer in das Thema eingestiegen bin und Dank der Antworten hier bin ich auch zwischenzeitlich der Meinung, dass der Index-Vorschlag keinen Sinn macht. Solange ich die Ursache nicht kenne, werde ich zusätzlichem workload vermeiden und den Index nicht erstellen.

    Vielen Dank allen.

Similar Threads

  1. Index Advisor, Anweisungen des plan-chache
    By wilfried in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-02-18, 08:29
  2. Primary Key in SYSCOLUMNS ?
    By a.wojcik in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 29-07-16, 13:49
  3. Index Advisor Empfehlung vs. "no low cardinality"
    By berndl in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 03-12-15, 21:11
  4. Index Advisor: Was bedeutet "Empfohlene Indizes entfernen"
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 18-11-15, 16:38
  5. Index Advisor
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-07-15, 14:04

Berechtigungen

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