Verwenden der Klausel OPTIMIZE FOR N ROWS mit der Klausel FETCH FIRST N ROWS ONLY
Die Klausel OPTIMIZE FOR n ROWS teilt dem Optimierungsprogramm mit, dass die Anwendung nur n Zeilen abzurufen beabsichtigt, die Abfrage jedoch die vollständige Ergebnismenge zurückgeben soll. Die Klausel FETCH FIRST n ROWS ONLY gibt an, dass die Abfrage nur n Zeilen zurückgeben soll.
Der Db2® -Datenserver nimmt nicht automatisch OPTIMIZE FOR n ROWS an, wenn FETCH FIRST n ROWS ONLY für die äußere Unterauswahl angegeben ist. Versuchen Sie die Angabe der Klausel OPTIMIZE FOR n ROWS zusammen mit der Klausel FETCH FIRST n ROWS ONLY, um Abfragezugriffspläne zu fördern, die Zeilen direkt aus den Tabellen, auf die verwiesen wird, zurückgeben, ohne zunächst eine Pufferoperation wie das Einfügen in eine temporäre Tabelle, das Sortieren oder das Einfügen in die Hash-Tabelle eines Hash-Joins auszuführen.
Anwendungen, die die Klausel OPTIMIZE FOR n ROWS angeben, um Abfragezugriffspläne zu fördern, die Pufferoperationen vermeiden, jedoch trotzdem die gesamte Ergebnismenge abrufen, zeigen möglicherweise eine schlechte Leistung. Dies liegt daran, dass der Abfrageplan, der die ersten n Zeilen am schnellsten zurückgibt, vielleicht nicht der beste Abfragezugriffsplan ist, wenn die gesamte Ergebnismenge abgerufen wird.