-
Ich habe mir nun mal die Mühe gemacht, den Explain mi den SQL's zu prüfen:
left join Lateral mit where order by limit
führt zu
Index Probe => Table Probe => Fetch n Rows => nested Loop Join
left join CTE mit On-Klausel führt zu
Index Probe => Table Probe => Aggregation => nested Loop
Der Unterschied ist, dass nach dem Lateral nur noch ein Fetch einer Zeile passiert, während bei dem Grouped-Join noch ein Aggregat gebildet werden muss, was durchaus mehr als 1 Zeile umfassen kann.
Gegen den CTE spricht ebenso, dass ich einen 2. Left join mit dem CTE benötige, wenn ich weitere Werte aus dem Satz haben muss.
Das funktioniert halt nicht mit dem CTE, da ich hier einen Group By benötige um Aggregate verwenden zu können.
Dies führt dann zu einem 2. Index Probe => Table Probe => nested Loop
Wie du an meinem Lateral siehst, benötige ich nur ein b.* um aus dem Lateral alles zu erhalten, was ich benötige.
Ein weiteres Argument gegen CTE's ist leider auch, dass ich diese nicht in einem Insert oder Merge verwenden kann, sondern hier auf derived Table gehen muss.
Es gibt aber noch eine weitere Anwendung für lateral.
Wer kennt nicht die Tabellen mit pseudo Array-Feldern, die durchnummeriert sind.
Bisher musste man diese mit einem etwas kompexeren union all trennen um sie per SQL vernünftig zu verarbeiten:
Code:
select artikel, menge01 as menge from myfile
union all
select artikel, menge02 as menge from myfile
:
Dies führt dann zu n * Indexscan => Table Probe => union all
Mit Lateral ist das nun erheblich einfacher:
Code:
select artikel, x.* from myfile
cross join lateral (
values(menge01)
union all
values(menge02)
) x (menge)
Dies führt zu n * values list => union all => nested loop
Außerdem gehört Lateral bei vielen anderen DBM's inzwischen zum Standard.
Wer mehr wissen will:
https://medium.com/@goldengrisha/a-d...n-7b09fcb3b745
Similar Threads
-
By svente in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 22-08-18, 16:34
-
By wti in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 11-09-15, 12:47
-
By Harald.Wallukat in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 06-12-13, 09:37
-
By Robi in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 12-11-07, 11:33
-
By Fertig in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 21-02-03, 11:28
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