[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2006
    Beiträge
    25

    Question SQL Performance

    Hallo,

    eine kleine Frage.

    Was ist schneller

    SELECT FELD_A,
    (SELECT FELD_B FROM DATEI_B WHERE …)
    FROM DATEI_A

    Oder

    SELECT FELD_A, FELD_B
    FROM DATEI_A
    LEFT OUTER JOIN DATEI_B

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Das hängt ganz davon ab, da die Ergebnisse unterschiedlich sein können.
    Beim skalaren Subselect darf nur 1 Satz und 1 Feld als Ergebnis rauskommen.
    Beim Join darfs es eben auch 1:N-Beziehungen geben.

    Wenn Zugriffspfade vorhanden sind, gibt es eigentlich keinen Unterschied.
    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
    Feb 2006
    Beiträge
    25
    Es geht um 1:1 oder 1:0.
    DATEI_B beinhaltet die Summen (SQL-View).

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    In diesem speziellen Fall kann man Performancevorteile bekommen, wenn man die Summe nicht über die View ermittelt.

    Begründung:
    Die View enthält keine Schlüssel und muss ggf. komplett als temporäre Tabelle erstellt werden um anschließend eine Joinbeziehung aufzubauen.

    select sum(feld) from file where key=irgendwas

    ist immer schneller als

    with
    myView as (select key, sum(feld) as feld from file group by key)
    select feld from myview where key=mykey

    Aber auch da kann der Optimizer ein Schnippchen schlagen.
    Bei einem Select ohne where (also eigentlich alles) kann die View wieder schneller sein.

    Oder wie es hier auch heißt:

    it depends .....
    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

  5. #5
    Registriert seit
    Feb 2006
    Beiträge
    25
    Danke.
    Werde ich testen.

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    frei nach (SQL) Theorie zählt die Ergebnismenge und falls diese gleich ist, sollte das gleich schnell sein. Alles andere sind Dreckeffekte des Analyzers und des Optimizers, die nicht nur mit jedem PTF in die andere Richtung kippen können, sondern auch von Fall zu Fall differieren könnten.

    mfg

    Dieter Bender

    Zitat Zitat von mariupol1963
    Hallo,

    eine kleine Frage.

    Was ist schneller

    SELECT FELD_A,
    (SELECT FELD_B FROM DATEI_B WHERE …)
    FROM DATEI_A

    Oder

    SELECT FELD_A, FELD_B
    FROM DATEI_A
    LEFT OUTER JOIN DATEI_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/

  7. #7
    Registriert seit
    Feb 2006
    Beiträge
    25
    Das stimmt.
    Ung. gleiche Antwortzeiten

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    So ist das nun mal mit den Zeiten.
    Es zeigt sich immer wieder, dass Anwendungen mit geringer Satzanzahl entwickelt und getestet werden.
    Da waren die Antwortzeiten sogar sehr schnell, obwohl die Tabellen keinerlei Indexe enthielten.

    Nachdem die Anwendung nun ein paar Wochen läuft, und inzwischen mehrere 10.000 Datensätze erzeugt wurden, zeigt sich die Schwäche im Design.

    Deshalb:
    Die Aussagen, was ist schneller oder nicht, hängt auch im Wesentlichen von der Satzanzahl und den verfügbaren Zugriffswegen ab.
    Obige Abfrage mit ca. 10.000 Sätzen bei V5R1 brachte ungefähr gleiche Zeiten.
    Die selbe Abfrage mit ca. 1.500.000 Sätzen bei V5R3 brachte gravierende Unterschiede. Der beste Zugriff war dort mit dem integrierten skalaren Subselect anstelle der View.
    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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    das ist aber gerade so ein Schmutzeffekt, wie er eigentlich nicht sein sollte. Die alte Query Engine hat offenbar erkannt, dass die View in einen Subselect auflösbar ist und die aktuelle (Beta) Version der viel gepriesenen neuen Query Engine merkt das nicht und berechnet bei Verwendung der View einen suboptimalen Zugriffsplan.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    So ist das nun mal mit den Zeiten.
    Es zeigt sich immer wieder, dass Anwendungen mit geringer Satzanzahl entwickelt und getestet werden.
    Da waren die Antwortzeiten sogar sehr schnell, obwohl die Tabellen keinerlei Indexe enthielten.

    Nachdem die Anwendung nun ein paar Wochen läuft, und inzwischen mehrere 10.000 Datensätze erzeugt wurden, zeigt sich die Schwäche im Design.

    Deshalb:
    Die Aussagen, was ist schneller oder nicht, hängt auch im Wesentlichen von der Satzanzahl und den verfügbaren Zugriffswegen ab.
    Obige Abfrage mit ca. 10.000 Sätzen bei V5R1 brachte ungefähr gleiche Zeiten.
    Die selbe Abfrage mit ca. 1.500.000 Sätzen bei V5R3 brachte gravierende Unterschiede. Der beste Zugriff war dort mit dem integrierten skalaren Subselect anstelle der View.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Feb 2006
    Beiträge
    25
    Ich habe mit den echten Dateien getestet - ca. 300.000 Sätze.
    Die Version mit subselect war ein Tik schneller, aber nicht grossartig.

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. Ferne SQL Analyse / Performance
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-08-05, 08:56
  5. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38

Berechtigungen

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