Zitat von
r3v0:
Die View hat soweit ich weiß keinen Index. Haben Views überhaupt Indexe?
Das View an sich hat natürlich keinen Index. Es handelt sich ja nur um ein
SQL-Statement (auch ein Insert oder Select hat keinen Index
). Ich bezog mich hier eher auf die Relationen, auf denen das View arbeitet. An sich ist ein Index ja gerade dafür gedacht, dass Du schneller Suchen kannst (eben zu Kosten der Einfüge/Lösch/Updateoperationen). Wenn Du jetzt eine Select-Anfrage erstellst oder eben einen Join, o.Ä., dann wird hier der Anfrageoptimierer (hoffentlich) einen Index berücksichtigen, soweit dieser vorhanden ist.
Wird also auf den Tabellen hauptsächlich eine bestimmte Anfrage ausgeführt, so lohnt sich hier ein Index (also Anfrage im Sinne von lesender Zugriff!). Natürlich kann es auch verschiedene Anfragen geben, die auf verschiedene Attribute zugreifen, da lohnen sich dann mehrere Sekundäre Indizes, allerdings nur solange die Lesezugriffe die Anzahl der Änderungen deutlich überwiegen (Update eines Index kostet natürlich wieder etwas Zeit).
An sich hilft hier im Zweifel auch die Auswertung der Statistiken die hier erhoben wurden. So erstellen Systeme wie Oracle und DB2 durchaus auch solche Informationen (wenn man es ihnen sagt), so dass man sieht, wie häufig welche Operationen eben statt finden/fanden. Das ganze lässt sich dann leicht ausnutzen um hier weitere Optimierungen vor zu nehmen. An sich hilft vielleicht auch gleich die Analyse des Auswertungsplans weiter (da findet man in den Graphischen Tools gleich einen Graphen, ansonsten müssten explain oder explain plan oder so helfen).