PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL: Create Index auf View schlägt fehl


Brudertac
2010-07-19, 12:02:32
Hallo zusammen,

vielleicht kann mir hier jemand weiterhelfen...

Ich versuche einen Index auf einem View zu erstellen da die Suche im View
immer langsamer wird...

Ich erhalte aber immer die Fehlermeldung
"Index für Sicht view1 nicht möglich. Es ist mindestens ein unzulässiges Konstrukt vorhanden."

Aber wie bekomme ich denn heraus was dieses unzulässige Konstrukt ist?
Selbst wenn ich den Index nur auf eine Spalte des Views lege bekomme ich
diesen Fehler....

Für Hilfe wäre ich echt Dankbar :smile:

UPDATE:
Problem eingegenzt: Ich verwende im View Outer Joins. Das darf man nicht :(
Gibt es einen Weg die Outer Joins zu ersetzen? Oder bringt es was den Index auf die View verwendeten Tables zu setzen?

daflow
2010-07-19, 13:33:35
Welches DBMS? Ist den die Anzahl der Rows in der View so viel kleiner als in den Quelletabellen?

Brudertac
2010-07-19, 14:30:44
MSSQL2000, jo da ist schon ein sehr großer Unterschied. Der View ist eigentlich eine
Zusammenfassung einiger wichtiger Daten aus einem sehr großen Pool.

Misda
2010-07-19, 14:53:23
Views werden doch immer wieder neu erstellt, ein Index macht da meiner Meinung nach auch gar keinen Sinn.

Mehr Sinn macht es, Indizes auf die Spalten der Ursprungstabellen zu setzen. Wenn die Abfrage, die du zum Erstellen des Views benutzt, beschleunigt wird, ist automatisch die Anzeige und Suche im View schneller. Evt. solltest du auch die Abfrage anders formulieren, kann ja sein das die Abfrage unnötig viele Operationen auslöst.

daflow
2010-07-19, 15:10:29
Ich will deinen Fragen zwar nicht ausweichen, aber für mich klingt es fast so, als Reden wir beim Ergebniss der View nicht gerade von Millionen von Rows...

Hast du dir mal den Zugriffsplan des View-SQLs an sich angesehen und ist es nicht letztendlich dessen Laufzeit die dich bremst? Wenn dem so ist, würde ich eher diesen Select analysieren und wenn dort wirklich aufwendige Fulltablescans vorkommen sollten, dann entsprechende Indizes auf die Quelltabellen legen. Wie siehts mit Statsistikwerten und tabellenreorganistion aus, werden diese regelmässig vorgenommen?

Brudertac
2010-07-19, 15:43:53
Ne, Millionen von Rows sind es wirklich nicht. :)
Aber dein Wink mit dem Analyser hat mich wachgerüttelt.
Es ist tatsächlich so das die SQL Abfrage an sich sehr gut läuft, erst wenn das ganze
über ASP gemacht wird (also Ausgabe auf Webseite) wird es viel Langsamer.

Ich werde also mal die IIS "Seite" auf Probleme prüfen...

daflow
2010-07-19, 16:17:33
Ne, Millionen von Rows sind es wirklich nicht. :)
Aber dein Wink mit dem Analyser hat mich wachgerüttelt.
Es ist tatsächlich so das die SQL Abfrage an sich sehr gut läuft, erst wenn das ganze
über ASP gemacht wird (also Ausgabe auf Webseite) wird es viel Langsamer.

Ich werde also mal die IIS "Seite" auf Probleme prüfen...

Schön zu hören ;) Problem eingrenzen in dem man die einzelnen Kopmonenten betrachtet ist allerdings nie verkehrt, dann mal gutes gelingen :)

Brudertac
2010-07-19, 17:01:11
Danke. :-) Auch für deine Hilfe!