-
- CTEs haben mit temp Tabellen nichts gemeinsam, das ist nur eine alternative Schreibweise.
- wenn man denselben CTE öfter benötigt, dann sollte man das als View hinterlegen.
- für SQL gilt (eigentlich) das Kohl Prinzip: entscheidend ist, was hinten rauskommt. Wenn unterschiedliche Formulierungen derselben Ergebnismenge zu verschiedenen Laufzeiten führen, dann schwächelt der Optimizer.
- einigen gängigen Schwächeanfällen (wie das Query Engin heißt, ist mir grundzipiell Wurscht!!!) kann man mit Temp Tabellen entgegenwirken, weil man so Selektivität vorziehen kann (erst Exttrakte ziehen, dann joinen).
D*B
-
Hallo,
ich habe die Abfrage 1x als CTE und 1x als CREATE TABLE ... with DATA gemacht.
Da mehrfach auf das ResultSet der Abfrage zugegriffen wird, habe ich merklich festgestellt, das die temp. Table wesentlich performanter ist.
Keine AHnung warum und ich habe auch groß keine Analysen gemacht, nur die Laufzeit war merklich kürzer mit der richtigen temp. Tabelle in der QTEMP....
-
Wie schon beschrieben, CTE's sind alternative Schreibweisen.
Was macht SQL eigentlich?
Da alle nur mit Wasser kochen, i.W. nichts anderes als ein Programmierer auch.
Der Programmierer überlegt sich vorher seine Zugriffe (LF's) bevor er loslegt. Anschließend werden die Zugriffe von links nach rechts vorgenommen.
Dabei wird links 1 Satz gelesen und nach rechts die passenden Daten je Join ermittelt, wobei dieser Join über Index am Besten ist um die Zugriffe zu reduzieren.
Die Schwierigkeit besteht halt, die Beziehung und die Where-Klausel unter einen Hut zu bringen.
Der Optimizer kann halt nur versuchen, das beste herauszuholen.
CTE's verkürzen nur die Schreibweise aber sparen nicht die Zugriffe!
Was temporäre Tabellen in QTEMP angeht so kann man hier noch mal mit Indizes beschleunigen.
Das Schöne an SQL:
DROP TABLE löscht automatisch auch alle Indizes!
Und wer mit Transaktionen arbeitet:
Hier kann man kurzfristig mit "Set Transaction" die Transaktion aussetzen bzw. bei einigen Befehlen (Update/Insert/Delete) "WITH NC" für QTEMP-Tabellen anwenden.
-
 Zitat von Fuerchau
Wie schon beschrieben, CTE's sind alternative Schreibweisen.
Was macht SQL eigentlich?
Da alle nur mit Wasser kochen, i.W. nichts anderes als ein Programmierer auch.
Der Programmierer überlegt sich vorher seine Zugriffe (LF's) bevor er loslegt. Anschließend werden die Zugriffe von links nach rechts vorgenommen.
Dabei wird links 1 Satz gelesen und nach rechts die passenden Daten je Join ermittelt, wobei dieser Join über Index am Besten ist um die Zugriffe zu reduzieren.
Die Schwierigkeit besteht halt, die Beziehung und die Where-Klausel unter einen Hut zu bringen.
Der Optimizer kann halt nur versuchen, das beste herauszuholen.
CTE's verkürzen nur die Schreibweise aber sparen nicht die Zugriffe!
Was temporäre Tabellen in QTEMP angeht so kann man hier noch mal mit Indizes beschleunigen.
Das Schöne an SQL:
DROP TABLE löscht automatisch auch alle Indizes!
Und wer mit Transaktionen arbeitet:
Hier kann man kurzfristig mit "Set Transaction" die Transaktion aussetzen bzw. bei einigen Befehlen (Update/Insert/Delete) "WITH NC" für QTEMP-Tabellen anwenden.
... was Einfluss hat ist:
- ob ein Cursur read only ist
- scrollable oder nicht
Indexe auf Temp tables braucht man eigentlich kaum noch (wenn es einen braucht, macht es sich einen und cached den)
@commit: Da muss man beachten, dass set connection nur an einer Transaktionsgrenze geht und die with Klausel kein SQL Standard ist. Besser und einfacher ist da, die Temp Tabellen in einer eigenen ACTGRP (und damit eigenem SRVPGM) zu verarbeiten, dann kann man diese Connection mit Isolation level no commit verarbeiten (CRTSQLRPGI COMMIT(*NONE))
D*B
Similar Threads
-
By Peet in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 29-10-14, 07:54
-
By Tonazzo in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 16-06-14, 09:30
-
By ExAzubi in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 09-03-14, 15:41
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-10-01, 14:24
-
By B.Hauser in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 01-10-01, 17:31
Tags for this Thread
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