-
mal wieder sql performance
Hallo liebe SQL-Gurus
beide beteiligten Dateien haben rd 8,5 Mio Datensätze
so war es mal:
Code:
create table temp#b/zuviel as (
select * from temp#b/meld where trstatus = 'P' and trstat00 <> 'I'
and trstat00 <> 'K'
and (trrmbele, trbv) not in(select s1bunr, s1bvrg from dtpp
where s1stat = 0 and s1kzfb = 1)) with data
das ist die letzte version
Code:
select * from temp#b/meld left outer join dtpp on
trrmbele = s1bunr and trbv = s1bvrg where
trstatus = 'P' and trstat00 <> 'I' and trstat00 <> 'K'
and s1stat = 0 and s1kzfb = 1 and s1btyp is null
Ich brauche aus Datei meld die Sätze, die NICHT in DTPP drin sind.
Ich habe alle Versionen durch
With a as ... (einfach, mehrfach)
not exists statt Join
alle empfolenen Indices/LF angelegt (mit und ohne select auf die o.a. selektionen)
Laufzeit immer > 1 Stunde
Das kann doch nicht wirklich richtig ein oder?
Beide Dateien haben KEINE gelöschten Sätze
Hat noch jemand eine Idee die Laufzeit etwas erträglicher zu machen?
Danke
Der ILEMax
-
Probier's doch mal in 3 Etappen:
Jeweils eine Teilmenge der beiden Dateien erstellen und anschließend diese Teilmengen verknüpfen.
-
Ein Left join schließt ja nun mal nichts aus sondern ergänzt die Daten nur um Zusatzfelder oder NULL falls nix da ist.
Also ist die 1. Version eigentlich so korrket:
select * from temp#b/meld a where trstatus = 'P' and trstat00 <> 'I'
and trstat00 <> 'K'
and not exists (select * from dtpp b where ....)
Für den not exists sind mir die Feldbeziehungen zwischen meld und dtpp nicht klar, also entsprechend anpassen.
Jetzt musst du natürlich bedenken, dass alle Sätze mit P durchsucht werden müssen, da für <> kein Index genommen werden kann.
Und je nach Ergebnis sind da eben viele Zugriffe erforderlich.
-
8,5 Mio ist ja nicht gerade viel, die hat man ja in einer Stunde fast mit der Hand durchsucht. Hast Du ma einen exception join probiert? (obwohl ja frei nach Theorie alle Varianten gleich schnell sein sollen.)
D*B
-
Danke,
@Baldur
Die erste Version ist seid ca. 5 Jahren im Einsatz. Aber mit der immer länger werdenden Laufzeit nicht mehr zumutbar
@pikachu
Code:
create table temp#b/zuviel as(
with a as (select * from temp#b/meld where trstatus = 'P' and
trstat00 <> 'I' and trstat00 <> 'K'),
b as (select * from dtpp where s1stat=0 and s1kzfb = 1)
select * from a left outer join b on
trrmbele = s1bunr and trbv = s1bvrg where s1btyp is NULL)
with data
läuft seid 40 Minuten ...
-
@DB
exception join ?
nö, ich glaube den kenn ich nicht.
Werde mal googlen und berichten
-
... was ich auch schon gehabt habe, war, dass create with no data und insert select eine andere (schnellere) Strategie gewählt hat.
D*B
-
Exception Join entspricht eigentlich dem "not exists", der später implementiert wurde.
Und ein With-SQL ist nur eine andere Schreibweise. Es wird tatsächlich keine temporäre Tabelle erstellt.
Ich habe aber aus ähnlichen Gründen auch schon mit temporären Tabellen gearbeitet, also in 2 oder auch mehr Schritten selektiert:
create table tempA ... as select ....
create table tempB ... as select * from tempA .....
-
... keine CTE! erst Tabelle erstellen und dann in einem weiteren SQL Statement insert into select.
-
Probier's mal mit 3 eigenständigen SELECTs nacheinander...
SELECT ... FROM Datei 1 WHERE ... >> Arbeitsdatei 1
SELECT ... FROM Datei 2 WHERE ... >> Arbeitsdatei 2
SELECT ... FROM Arbeitsdatei 1 WHERE ... NOT IN (
SELECT ... FROM Arbeitsdatei 2)
-
@pikachu
Das ist deutlich schneller!
< 10 Minuten!
Seeeeehr seltsam ...
Danke!
-
... das kommt auf die selektivität an, die temp table variante zieht die selektivität vor alles andere (und hält die Query engine zuweilen von überraffinierten Versuchen ab).
Similar Threads
-
By Fuerchau in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 23-06-17, 10:04
-
By mk in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 09-07-15, 11:31
-
By DKSPROFI in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 24-12-14, 19:03
-
By Bernstein in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 05-08-14, 17:34
-
By Pia in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 06-11-02, 09:03
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