Nur nochmals zum besseren Verständnis.
Wird in einem SQL-Statement eine DDS beschriebene logische Datei angegeben, wird vor Release 7.1 TR5 die Abfrage von der alten CQE (Classic Query Engine) ausgeführt. Der Grund liegt darin, dass bei Verwendung von DDS beschriebenen logischen Dateien, die DDS-Definition analysiert werden muss, was vor Release 7.1 TR5 nur von dem alten Optimizer ausgeführt werden konnte. Aus der DDS-Definition werden Feld-Auswahl, Join-Informationen und Select-/Omit-Anweisungen herausgefiltert und das eigentliche SQL-Statement basierend auf diesen Informationen neu geschrieben.

Erst nachdem die Abfrage neu geschrieben wurde, erfolgt die eigenltiche Optimierung.
Zu diesem Zeitpunkt weiß der Optimizer nicht (mehr), dass ursprünglich eine DDS beschriebene logische Datei mit (oder gar mit welchem) Schlüssel angegeben wurde.

Das oberste Ziel bei der Optimirung ist es den Weg zu finden über den am schnellsten an die Daten herangekommen werden kann. Manchmal entspricht der beste Zugriffsweg (SQL Index oder DDS beschriebene logische Datei) nicht der gewünschten Sortierung, da die selektierten Daten notfalls zwischengespeichert und erst am Schluss sortiert werden.

Deshalb gilt die Regel, wenn eine bestimmte Sortierung erforderlich ist, muss eine Order By-Anweisung angegeben werden.

Birgitta