Performance SQL-Abfrage steigern

Guten Tag,
habe ein sql in der ich eine daten einer view abfrage, die ca 25 mio zeilen enthält. selct count(*) dauert schon 31 minuten:wink:.
Nun möchte ich folgendes SQL schneller bearbeitet bekommen. Wäre einfach klasse wenn ihr mich dabei unterstützen könntet.

DROP table NEUE_TABELLE;
CREATE table NEUE_TABELLE as
SELECT a.zeitstempel, a.vertragsnummer, a.vertragsversion,
a.datum1,a.herkunft,a.einheit,
SUM (a.einheit2) as einheit2,
SUM (a.einheit3) as einheit3,
a.sondernummer, a.sondernummer2,
a.nummer2,
CASE WHEN a.datum1 in (‚N‘) then (‚00000000‘)
ELSE NULL
END as Del_Kz
FROM VIEW_auf_Tabelle
WHERE a.datum1 IN (‚N‘)
AND a.herkunft in (‚XXX‘)
AND substr(organisation,1,2) in (‚YY‘)
GROUP BY a.zeitstempel, a.vertragsnummer, a.vertragsversion,
a.datum1,a.herkunft,a.einheit,
a.sondernummer, a.sondernummer2,
a.nummer2,
CASE WHEN a.datum1 in (‚N‘) then (‚00000000‘)
ELSE NULL
END
;

CREATE INDEX NEUE_TABELLE ON NEUE_TABELLE (vertragsnummer);
analyze table NEUE_TABELLE ESTIMATE STATISTICS SAMPLE 50 PERCENT;

Hallo,

es wäre hilfreich zu erfahren, was das eigentliche Ziel dieser Abfage ist.
Sollen mehrere Tabellen verknüpft werden, kann ein performanter INNER JOIN benutzt werden. Jedes mal die Tabellen neu anzulegen ist bestimmt auch nicht die beste Idee.
Die Accumulation mit „SUM“ könnte eventuell in einer weiteren Zwischentabelle abgespeicher werden. (Nach dem Motto ‚Time for Space‘).
Letztlich kommt es bei der Performance aber auf die Implemenation des SQL-Interpreters an.

Schöne Grüße

Guten Tag,
habe ein sql in der ich eine daten einer view abfrage, die ca
25 mio zeilen enthält. selct count(*) dauert schon 31
minuten:wink:.

Du ziehst aus einer View neue Daten? Eine View wird im Moment des „select spalte from view“ erstellt, dann schränkst Du die View ein…

Wozu?

Schreibe Dir eine neue View, die Dir die Daten liefert, die Du benötigst.

Guten Tag,
habe ein sql in der ich eine daten einer view abfrage, die ca
25 mio zeilen enthält. selct count(*) dauert schon 31
minuten:wink:.

Noch was … wenn das count(*) der view schon eine halbe Stunde dauert, sollten entsprechende Indexe der Quelltabellen das Aufbauen der View erheblich beschleunigen können.

Ich selbst arbeite mit Informix-Views, die mehrere Prozeduren beinhalten, und ein select count(*) auf die größte View, mit der ich je zu tun hatte war in rund 5 Minuten „durch“.

Leider erwähnst Du wortreich Dein DBMS, so dass man Dir dabei gut helfen kann…