[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2018
    Beiträge
    1

    SQL-Update mit inner join

    Hallo Zusammen,
    ich versuche derzeit einen update, welcher aber nur über Kriterien einer zweiten funktioniert. Ich versuche es mal anhand eines Beispiels zu erklären.
    (Sollen plakativ sein und keinen Standards entsprechend ;-) )

    Tabelle Abteilungszuordnung:
    Name Abteilung
    Müller EDV
    Frei EDV

    Tablle Adressen
    Name Ort
    Müller Musterstadt
    Frei Testort

    Ich will die Abteilung, jedes Mitarbeiters, welcher in Musterstadt wohnt, auf IT ändern.
    Habe mehere Ansätze versucht, aber keiner hat zum Erfolg geführt.

    Schon mal danke

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121
    PHP-Code:
    Update Abteilungszuordnung a
    set Abteilung 
    'IT'
    where a.Name in 
    (Select Name from Adressen b
    where b
    .Ort='Musterstadt'
    ohne das jetzt selbst getestet zu haben.

    Gruß
    Ronald

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Besser ist:

    update MyFile A
    set Field = xyz
    where exists (select * from MyFile B where A.Key = B.Key)
    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

  4. #4
    Registriert seit
    Jan 2018
    Beiträge
    20
    Gibt es eigentlich eine Möglichkeit, auf der AS400 den Ausführungsplan anzuzeigen?

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... STRDBG, zum Beispiel.
    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
    Jan 2018
    Beiträge
    20
    Ich meinte etwas vergleichbares zu dem folgenden Windows/Linux-Programm

    The db2expln tooldescribes the access plan selected for SQL and XQuery statements.Use the tool to obtain a quick explanation of the chosen access planwhen explain data was not captured.


    https://www.ibm.com/support/knowledg.../r0005736.html

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Im iSeries-Navigator, Menü SQL, und ggf. auch im neuen iSeries-Director.
    Bestimmt weiß Birgitta da mehr.
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... da gibt es ein Redbook Query optimization - Google weiß wo. Wobei anzumerken ist, dass die diagnostics im Joblog (bei STRDBG) und der Database Monitor die realen Verhältnisse zur Laufzeit abbilden und Visual explain eher zum Spielzeug gehört, wie db2expln übrigens auch. Das sind reine Schätzungen, die mit den Verhältnissen zur Laufzeit nix zu tun haben müssen. Zur Laufzeit könnte selbst der Ausführungsplan abweichend sein!

    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
    Jan 2018
    Beiträge
    20
    @Fuerchau: Cool, danke. Da habe ich den Navigator ja mal wieder total unterschätzt.

    @BenderD: Das läuft nach dem Motto "trau keiner Statistik, die Du nicht selbst gefälscht hast". Das ist mir völlig klar. Trotzdem hilft mir das bei der Entwicklung weiter, wenn ich die Schätzung habe. Vielen Dank für die Info. Ich werde mal Google nach dem Redbook fragen.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Also für die Entwicklung verlasse ich mich immer auf die Ausgaben des Debug-Modus.
    Die 1. Optimierung kann sehr unterschiedliche ausfallen, wenn das betroffene Volumen trotz identischem SQL jedoch unterschiedlich ist.
    Die 2. Abfrage wurd u.U. auch noch mal optimiert, anschließend bleibt aber der ODP auf (immer erst ab der 1. Wiederholung!) und SQL verlässt sich dann auf den Zugriffsplan.
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Gibt es eigentlich eine Möglichkeit, auf der AS400 den Ausführungsplan anzuzeigen?
    Der Access Plan (mit jeder Menge zusätzlicher Informationen) kann über Visual Explain angezeigt werden.
    Visual Explain kann wiederum aus allen Analyse Tools in Access Client Solutions (ACS) und IBM i Access For Windows aufgerufen werden.

    Access Client Solution öffnen, unter Datenbanken "SQL Skrip ausführen" auswählen, SQL-Statement erfassen und ausführen bzw. über Visual Explain erklären oder ausführen lassen.

    Über SQL Performance Center (in ACS) Plan Cache und SQL-Statements anzeigen, Filter setzen, SQL-Statement auflisten. Gewünschtes SQL-Statement mit RechtsClick und Visual Explain analysieren.

    Überblick über die (IBM i) Analyse-Tools
    Click image for larger version. 

Name:	Analysis Feedback Tools.JPG 
Views:	4 
Size:	86,5 KB 
ID:	452

    Anmerkung: Von Client Access for Windows sollte man sich langsam verabschieden und das Nachfolge-Product ACS (Access Client Solutions) verwenden.
    Bis dato wurden immer noch neue Service-Packs für Client Access bereitgestellt.
    Vorgestern wurde von IBM das Ende von Client Access offiziell auf den 30.04.2019 angekündigt.

    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

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Also für die Entwicklung verlasse ich mich immer auf die Ausgaben des Debug-Modus.
    Die 1. Optimierung kann sehr unterschiedliche ausfallen, wenn das betroffene Volumen trotz identischem SQL jedoch unterschiedlich ist.
    Die 2. Abfrage wurd u.U. auch noch mal optimiert, anschließend bleibt aber der ODP auf (immer erst ab der 1. Wiederholung!) und SQL verlässt sich dann auf den Zugriffsplan.
    1. Die Debug-Nachrichten sind nicht mehr vollständig und zur Analyse nur noch bedingt geeignet.
    2. Bei der Optimierung werden sowohl die vorhandenen Zugriffswege (Binary Radix / Encoded Vector Indices, Key Constraints und logische Dateien) als auch die Datenzusammensetzung geprüft. Über den Statistics Manager werden permanent Informationen über die Datenzusammensetzung gesammelt. Bei der Optimierung werden diese Informationen mit berücksichtigt. Deshalb kann die gleiche Abfrage auf unterschiedlichen Maschinen zu unterschiedlichen Access Plans führen und selbst auf der gleichen Maschine können für das gleiche SQL-Statement bis zu 3 Access Pläne gespeichert werden.
    Es gibt natürlich noch weitere Kriterien, die das Ergebnis der Optimierung beeinflussen können, anderer Release- oder PTF-Stand, andere Pool/Memory-Größe, Einstellungen in der QAQQINI-Datei etc.
    3. Der zeitaufwändigste Part bei der Optimierung ist das Öffnen des Datenpfades.
    Beim Öffnen des Datenpfades werden die im Access Plan beschiebenen temporäre Objekte generiert und miteinander verknüpft und dann über die ebenfalls beschriebenen Zugriffsmethoden (Tables Scan, Index Scan, Index Probe) und Indices mit Daten gefüllt. (FULL OPEN).
    Da das Öffnen des ODPs zeitaufwändig ist, versucht SQL die Datenpfade offen zuhalten, d.h. damit beim nächsten Durchlauf lediglich die Daten (im ODP) aktualisiert werden müssen (PSEUDO OPEN).
    Da jedoch nicht sicher ist, ob eine Abfrage ein One-Shot ist oder nicht, wird der ODP nach der ersten Ausführung (per Default) immer geschlossen.
    Wird der ODP gelöscht, z.B. am Ende der Aktivierungsgruppe oder beim Verlassen des Moduls (CLOSQLCSR=*ENDMOD), muss bei jeder Ausführung die volle Optimierung durchlaufen werden.

    SQL ist überigens auch lernfähig.
    Nach Ausführung jeder Abfragen wird (im Untergrund nochmals) optimiert. Sollte an dieser Stelle festgestellt werden, dass es einen besseren Access Plan gibt (z.B. weil ein neuer Index angelegt wurde), kann der Optimizer bei der nächsten Ausführung (es ist nicht gesagt, dass er muss) den geänderten Access Plan verwenden (AQP = Adapted Query Processing) und damit erneut durch die (volle) Optimierung laufen.

    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. LF mit Join Bedienung
    By svit in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 07-09-16, 17:22
  2. sql join mit distinct o.ä.
    By Robi in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 02-08-15, 18:24
  3. SQL mit Update + Join
    By Harald.Wallukat in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 06-12-13, 10:37
  4. Join File
    By muadeep in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 05-07-02, 11:37
  5. SQL und AS/400 JOIN
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 11-07-01, 08:57

Tags for this Thread

Berechtigungen

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