Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Index bei StoredProcezure

  Alt 1. Dez 2021, 20:22
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.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat