Wenn in der View viele self joins vorhanden sind, oder allgemein sehr viele Tabellen verknüpft werden, versagt so ziemlich jeder
Query-Optimizer. Selbst wenn Du jetzt dieses Problem durch Speichereinstellungen gelöst hast, wirst du später irgendwann an die Grenzen stoßen, die sich dann nicht mehr erweitertn lassen.
Neben Stored Procedures bieten sich auch Functions an. Rein konzeptionell würde ich Funktionen vorziehen, denn eine Funktion liefert ja etwas (z.B. eine Tabelle), während eine Prozedur etwas auslöst bzw. bewirkt.
Der prinzipielle Aufbau wäre dann:
1. Definiere Resultattabelle
2. Befülle die Tabelle mit dem PK sowie dem ersten Teil an Daten (z.b. max 8x JOIN, muss man ausprobieren)
3. Befülle die Tabelle mit dem nächsten Block
4. Usw
N. Liefere die Daten