ich nutze zur Zeit noch ADS 8.1 und muß deshalb bei einem komplizieren SQL-Ausdruck vorher eine VIEW im Data Dictionary definiert haben, die ich anschließend im eigentlichen SQL-Statement nutzen kann.
Leider ist der Zugriff auf die daraus resultierende Tabelle viel zu langsam. Der Execution Plan zeigt an, dass bei der VIEW kein Index benutzt wird.
Frage: kann ich Indizes zu Views erstellen?
Der folgende Code funktioniert leider nicht.
Code: Alles auswählen
CREATE VIEW KommStatusAktuell
AS SELECT KomSt.*
FROM KommStatus As KomSt
INNER JOIN (SELECT KomSt2.KommNr,Max(KomSt2.Datum) As MaxDatum
FROM KommStatus As KomSt2
//WHERE KomSt2.Datum<=:AmDatum
GROUP BY KomSt2.KommNr) As KomSt3
INNER JOIN (SELECT KomSt4.KommNr,Max(KomSt4.Uhrzeit) As MaxUhrzeit
FROM KommStatus As KomSt4
GROUP BY KomSt4.KommNr) As KomSt5
ON KomSt.KommNr = KomSt5.KommNr And
KomSt.Uhrzeit = KomSt5.MaxUhrzeit
ON KomSt.KommNr = KomSt3.KommNr And
KomSt.Datum = KomSt3.MaxDatum;
CREATE UNIQUE INDEX KomStId ON KommStatusAktuell( KomStId );
CREATE INDEX KommNr ON KommStatusAktuell( KommNr );
CREATE INDEX FStId On KommStatusAktuell( FStId );
CREATE INDEX PStId On KommStatusAktuell( PStId );
CREATE INDEX DatumUhrzeit ON KommStatusAktuell( Datum,Uhrzeit );