[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    SQL / Select auf LF / Optimizer

    Hallo zusammen,

    ich habe mal eine Wissensfrage.

    Wenn ich beim SELECT eine Logische Datei anstatt einer Physischen Datei angebe. Kann ich dann davon ausgehen, dass sich das System so verhält als hätte ich einen View angegeben. Die Datenselektion die über die logische Datei ausgewählt wurde über Compare bleiben erhalten. Ich kann aber die Sortierung (was das auch für immer einen Sinn macht) ändern und der Optimizer schnappt sich dann nicht zufällig eine andere logische Datei die die Selektionskriterien nicht mehr hat.

    Ich hoffe ihr versteht was ich meine

    Viele Grüße Harkne

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Eine Select auf eine LF wirkt tatsächlich wie ein Select auf eine View.
    D.h., dass der Optimizer sich die PF sucht.
    Der SQL wird in der Where-Klausel um die Select/Omit der LF erweitert.
    Anschließend sucht sich der Optimizier einen oder auch mehrere Indizes aus, die zur Where und/oder der Order-By-Klausel passen.

    Bis zu irgend einem Release (V7) wurden LF's mit Select/Omit ignoriert. Wenn kein passender Index da ist wird halt ein Tablescan durchgeführt.

    Seit (V7?) gibt es ja inzwischen "calculated" Indizes, so dass auch Select/Omit-LF's berücksichtigt werden können.
    Allerdings muss man hierfür in seiner Where-Klausel die Select/Omit-Definition genau wiederholen.
    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
    Wird eine DDS beschriebene logische Datei in einem SELECT-Statement angegeben, wird das SELECT-Statement muss die DDS-Beschreibung ananlysiert und im Anschluss das SELECT-Statement neu geschrieben werden. Aus der DDS-Beschreibung werden die Feld-Auswahl, Join-Anweisungen und Select/Omit-Anweisungen übernommen. Key-Informationen werden ingoriert.
    Die eigentliche Optimierung beginnt erst nachdem das SELECT-Statement überarbeitet wurde. Bei der Optimierung werden dann alle Zugriffswege (in SQL Indices, DDS logischen Dateien und in Key Constraints) bewertet.
    Vor Release 7.1 TR6 konnte diese DDS-Analyse nur von der alten Query Engine (CQE) durchgeführt werden, d.h. alle Abfragen mit Zugriff auf LFs wurden an die CQE reroutet.

    Die Erweiterungen (neue Key-Spalten / Where-Bedingungen) waren in Release 6.1 in erster Linie für native I/O. Erst nach und nach "lernt" der Optimizer diese SQL Indices auch "richtig" zu nutzen, d.h. nicht nur die Key-Informationen zu verwenden.

    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

Similar Threads

  1. DDS Select / Omit
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 10-03-15, 17:20
  2. SQL-Optimizer
    By Fuerchau in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-08-14, 16:37
  3. SQL-Optimizer V7R1 und kein Ende
    By Fuerchau in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 08-05-14, 13:52
  4. SQL Select
    By TARASIK in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-09-02, 11:59
  5. SQL SELECT mit Endsumme ?
    By Schnichels in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-01-02, 14:45

Berechtigungen

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