[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2006
    Beiträge
    60

    create index - wann?

    Hallo Zusammen,

    ich habe eine Frage zur SQL-Funktion "create index".

    Wann ist es erforderlich ein Index neu zu erstellen?
    Wir löschen und erstellen diese täglich neu, ist dieses überhaupt erforderlich?
    Und wenn ja aus welchem Grund?

    Vielen Dank im Voraus
    schöne Grüße

    Bobou

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Löschen und Neu erstellen ist vollkommen unsinnig!
    Wozu sollte das gut sein?
    Ein Index wird vom System vollständig und permanent mit gepflegt. Je mehr Indizes, desto länger dauert ein Insert/Update/Delete.
    Für bestimmte Massenupdates lohnt es sich durchaus, die Pflege temporär auszuschalten (CHGLF reicht da) und hinterher wieder einzuschalten (was sich auch parallelisieren läst).

    Ein Index ist per Grundsatz nicht erforderlich sondern dient lediglich der Beschleunigung von Zugriffen, wenn die Schlüsselauswahl der jeweiligen join/where/group/order-Klausel entspricht.
    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
    Nov 2006
    Beiträge
    60
    Danke für die Antwort.

    Wie ist es wenn die physische Datei gelöscht wird.
    Sollte danach der Index neu erstellt werden?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Bobou Beitrag anzeigen
    Danke für die Antwort.

    Wie ist es wenn die physische Datei gelöscht wird.
    Sollte danach der Index neu erstellt werden?
    Indices sind immer uptodate, wenn also die Tabelle/Datei (bzw. die Daten in der Tabelle) gelöscht wird, werden auch die Indices automatisch bereinigt.

    Ein Index ist (fast) nichts anderes als eine geschlüsselte logische Datei.
    ... und ich gehe stard davon aus, dass Ihr Eure logischen nicht jede Nacht neu erstellt.

    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
    Feb 2001
    Beiträge
    20.241
    Wobei das Beeinigen des Indexes beim Löschen einer PF auch als Delete des Objektes interpretiert werden kann.
    Ein DLTF einer PF ist nicht möglich, wenn DDS-LF's noch angehängt sind.
    Ein DLTF einer TABLE impliziert das Löschen seiner Indizes gleich mit.
    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

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Beim Erstellen eines Index wird zuerst eine Analyse der Daten gemacht und basierend darauf der Baum aufgebaut.
    Wenn sich die Daten im laufe der Zeit in eine ganz andere Richtung bewegen als von der DB angenommen, kann es sein das der Baum nicht sooo optimal aufgebaut ist.
    Da kann es schon zu besseren Werten kommen wenn der Baum neu aufgebaut wird.

    Das ist aber normalerweise nicht nötig. Und selbst wenn, braucht man das nur 1 mal machen und fertig.

    lg Andreas

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ein DLTF einer PF ist nicht möglich, wenn DDS-LF's noch angehängt sind.
    Ein DLTF einer TABLE impliziert das Löschen seiner Indizes gleich mit.
    Wie kommst Du bloß auf solche schwindeligen Aussagen?
    Der CL-Befehl DLTF löscht WEDER DDS-beschriebene physische Dateien NOCH SQL Tabellen, wenn auf diesen mindestens ein Index, eine View, eine DDS beschriebene logische Dateie oder Trigger liegt!

    Der SQL Befehl DROP TABLE löscht sowohl eine physische Datei als auch eine SQL Tabelle mitsamt den abhängigen Objekten (Indices, Views, logische Dateien, Trigger), unabhängig davon, ob diese DDS oder SQL beschrieben sind.

    @Andreas:
    Im Prinzip hast Du recht (für andere Datenbanken u.a. DB2 LUW).
    Da die DB2 for i jedoch im Betriebssystem integriert ist, können ganz andere Mechanismen greifen, so dass auch die Struktur-Bäume immer optimiert sind.

    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    - die Unterschiede zwischen einzelnen DB Systemen dürften hier marginal sein, insbesondere zwischen den einzelnen DB2 Varianten. Der Urahn von DB2, das System R hat von Beginn an sogenannte B-trees für die Indexe verwendet - und die sind selbst balancierend.
    - die mesiten Datenbanksysteme verwenden da auch B-trees (die kamen bis auf System 38 später)
    - Einbettung in das Betriebssystem bringt hier nichts, das sind Operatioen, die sich auf Table Ebene abspielen.
    - DB2/400 ist hier klar im Nachteil, da die Datenbank auch noch Datenschrank (ISAM mit RLA) können muss. (funktioniert aber trotzdem gut, seit die Hardware stark genug ist)
    - neu Erstellung könnte gerade auf der AS/400 auch Nachteile bringen, da die Reihenfolge der Erstellung von Zugriffspfaden auf der AS/400, wg. Access path sharing, kritisch ist.

    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/

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Und wieder gilt, fast jeder Post = eine andere Meinung.
    Zusammengefasst sind sich zumindest alle einig, dass ein Rebuild nicht notwendig ist.

Similar Threads

  1. Index Advisor
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-07-15, 13:04
  2. LF / SQL index
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 31
    Letzter Beitrag: 18-03-15, 13:29
  3. Create Index
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 06-11-13, 11:44
  4. Wann hat die AS eigentlich Geburtstag??
    By USP in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-08-01, 19:05
  5. USRPRF - SPLCTL - wann
    By LGALF in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 07-08-01, 11:49

Berechtigungen

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