wenn du auf einer sp einen select machst, dann wird dessen datenmenge immer wie Delphi.Narium
schon schrieb komplett ausgewertet (es sei denn da drin sind first oder rows) anweisungen,
das ist aber unwichtig in diesem Kontext.
Es ist wirklich do das die SP intern alle 86 mio records aklappert und
die mit dem Suspend an die ergebnismenge sendet, sprich das was dann
außerhalb der sp als where bedingung dann dessen ergebnisse noch einschränkt.
Im Gegensatz zu views, die eigentlich nur platzhalter für komplexe selects sind
und daher vom optimierer die intern benutzten mit anderen tabellen indiziert
abgefragt werden können, geht das bei sp gar nicht.
Beispiel
Code:
create procedure test
returns (tier varchar(20))
as
begin
tier='Hund';
suspend;
tier='Katze';
suspend;
tier='Maus';
suspend;
end
auch diese datenmenge kannst du mit einem select abfragen, per join mit
anderen daten verknüpfen, aber es ist offensichtlich, das da gar keine
tabelle intern benutzt wird. Ein Select außerhalb einer SP kann die
ergebnismenge zwar noch beliebig einschränken oder sortieren, der
optimierer in
fb hab dabei auch nichts damit zu tun.