-
Die Antwort ist immer "it depends".
... und MSSQL ist sicher keine Db2 for i.
... zumal ich auch nicht gesagt habe, dass ein LEFT OUTER Join performanter ist, sondern lediglich, dass die Optimierung einfacher ist, wenn alles an einer Stelle konzentriert ist.
Es gibt zwar einen SQL Standard, den sich alle Datenbanken-Hersteller einzuhalten verpflichtet haben. Aber zum einen gibt es aktuell keine einzige Datenbank, die den Standard zu 100% abdeckt (weder die großen wie ORACLE und Db2 ... und schon gar nicht MSSQL), zum zweiten haben die einzelnen Datenbanken-Hersteller Features integriert, die nicht Standard sind und zum dritten gibt es meines Wissens keine eindeutigen Regeln, nach denen optimiert werden soll.
Sicher die Verwendung von Binary Radix Tree Indexes zum Schnellen auffinden der Daten ist in jeder Datenbank integriert, aber in welcher Datanbank außer den Db2-Datenbanken werden EVI (Encoded Vector Indexes) eingesetzt.
Db2 for i ist außerdem die einzige Datenbank, die im Betriebssystem integriert ist. Darin unterscheidet sie sich im übrigen auch von den anderen Db2 Datenbanken (LUW / z/OS). Deshalb kann bei der Optimierung bzw. beim schnellen Zugriff auf die Datei auf ganz andere Methoden zurückgegriffen werden als in anderen Datenbanken.
Des weiteren parst der Query-Optimizer der Db2 for i die SQL-Statements die SQL-Statements vor der eigentlichen Optimierung und kann diese mit Hilfe einer ganzen Reihe von Methoden und Algorithmen umschreiben. Bei einfachen Abfragen, sollte der Optimizer die LEFT OUTER JOINs und die Abfragen in den WHERE-Bedingungen genau gleich optimieren. Ob er dann dabei die LEFT OUTER JOINS in WHERE-Bedingungen umsetzt oder umgekehert oder eine ganz andere Syntax verwendet bleibt dahingestellt.
Da der Optimizer jedoch ein dummes Programm (oder auch viele dumme Programme und Prozeduren) ist, ist es vermutlich einfacher einen JOIN in den FROM-Anweisungen als einen vielleicht auch noch verschachtelten Sub-Select in den WHERE-Bedingungen.
Auf alle Fälle solltest Du nicht Äpfel (MSSQL) mit Birnen (Db2 for i) vergleichen, sondern die Messungen und Vergleiche ob LEFT OUTER oder JOIN in den WHERE-Bedinungen schneller ist oder nicht auf der IBM i durchführen.
... ach ja, und dann gibt es da ja auch noch eine ganze Reihe von anderen Faktoren, die die Performance beeinflussen können, Hardware, Release, Memory, Pool, Optionen in der Abfrage-Options-Datei, Optimierungsziel etc.
Birgitta
Similar Threads
-
By franz77 in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 24-02-19, 21:15
-
By Bernstein in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 05-08-14, 17:34
-
By NorBo in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 29-04-03, 15:12
-
By mk in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 27-06-02, 09:32
-
By hs in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 27-08-01, 12:29
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks