Hin- und wieder stolpere ich jedoch über ungünstig formulierte SQL-Statements, die der ADS nicht optimieren kann. Da der ADS aber von sich aus so rasend schnell ist, fällt das zunächst bei Tabellen mit nur wenigen 1000 Datensätzen kaum auf. Erst bei großen Datenmengen stelle ich dann signifikante Geschwindigkeitseinbußen fest.
-
Mit Hilfe des Data Architekten (ARC) kann man sich zu Statements einen "Execution Plan" anzeigen lassen, um gegebenenfalls Geschwindigkeitsprobleme zu finden. In einem konkreten Fall zeigt z.B. der Plan an, dass eine Tabelle in physikalischer Reihenfolge durchsucht wird. Dabei gibt es die Warnung "There is no existing Index matching the sort columns".
Wie der fehlende Indexschlüssel aussehen soll, wird leider nicht angezeigt und ich habe keinen blassen Schimmer, was da fehlt...
-
Hier mal das zu gehörige Statement. Zur Erklärung: es gibt eine Tabelle "Bestellungen" und eine Tabelle mit Ereignissen zu den Bestellungen. Ich möchte die Bestellungen inklusive dem Datum des letzten Ereignisses anzeigen.
Code: Alles auswählen
SELECT BST.*,BSTH.Datum BSTHDatum
FROM Bestellung BST
INNER JOIN BestellungEreignis BSTE ON BST.BSTId=BSTE.BSTId AND BSTE.BSTEId =
( SELECT TOP 1 BSTE.BSTEId
FROM BestellungEreignis BSTE
WHERE BSTE.BSTId=BST.BSTId
ORDER BY BSTE.Datum DESC )
ORDER BY BST.BestAufNr,BST.LfdNr,BST.BSTId;
Uli