Entgegen allen Erwartungen sind die Ansichten unter bestimmten Umständen viel langsamer.
Ich habe dies vor kurzem entdeckt, als ich Probleme mit Daten hatte, die aus Oracle gezogen wurden und in ein anderes Format umgewandelt werden mussten. Vielleicht 20k Quellzeilen. Eine kleine Tabelle. Dazu importierten wir die Oracle-Daten so unverändert wie möglich in eine Tabelle und verwendeten dann Ansichten, um Daten zu extrahieren. Wir hatten sekundäre Ansichten, die auf diesen Ansichten basierten. Vielleicht 3-4 Ebenen von Ansichten.
Eine der letzten Abfragen, bei der vielleicht 200 Zeilen extrahiert wurden, dauerte über 45 Minuten! Diese Abfrage basierte auf einer Kaskade von Ansichten. Vielleicht 3-4 Ebenen tief.
Ich könnte jede der fraglichen Ansichten nehmen, ihre Sql in eine verschachtelte Abfrage einfügen und sie in ein paar Sekunden ausführen.
Wir fanden sogar heraus, dass wir jede Ansicht in eine temporäre Tabelle schreiben und diese anstelle der Ansicht abfragen konnten, und es war immer noch viel schneller als die Verwendung von verschachtelten Ansichten.
Was noch merkwürdiger war, war, dass die Leistung in Ordnung war, bis wir eine bestimmte Anzahl von Quellzeilen erreichten, die in die Datenbank gezogen wurden, und dass die Leistung innerhalb weniger Tage von einer Klippe abfiel - ein paar weitere Quellzeilen waren alles, was es brauchte.
Die Verwendung von Abfragen, die auf Ansichten zurückgreifen, die wiederum auf Ansichten zurückgreifen, ist also viel langsamer als eine verschachtelte Abfrage - was für mich keinen Sinn macht.