Das Hinzufügen von Indizes wird hier oft als Abhilfe für Leistungsprobleme vorgeschlagen.Datenbank-Indizes: Eine gute Sache, eine schlechte Sache oder eine Zeitverschwendung?
(Ich spreche über das Lesen & Abfrage nur, wir alle wissen Indizes können Schreiben langsamer machen).
Ich habe dieses Mittel viele Male über viele Jahre sowohl auf DB2 als auch auf MSSQL ausprobiert, und das Ergebnis war immer enttäuschend.
Mein Befund war, dass, egal wie "offensichtlich" es war, dass ein Index die Dinge besser machen würde, es stellte sich heraus, dass der Abfrageoptimierer schlauer war und mein clever ausgewählter Index fast immer schlimmer machte.
Ich sollte darauf hinweisen, dass meine Erfahrungen meist auf kleine Tabellen beziehen (< 100'000 Zeilen).
Kann irgendjemand ein paar nüchterne Richtlinien zu den Optionen für die Indizierung bereitstellen?
Die richtige Antwort wäre eine Liste von Empfehlungen sein etwas wie:
- Nie/immer Index eine Tabelle mit weniger als/mehr als NNNN Aufzeichnungen
- Nie immer/Indizes auf Mehrfeld-Tasten betrachten
- nie/immer Clustered-Indizes
- verwenden Sie niemals/immer mehr verwenden, als NNN Indizes auf einer einzigen Tabelle
- nie/immer einen Index hinzufügen, wenn [etwas Magie Zustand zu erfahren über ich sterbe]
Idealerweise wird die Antwort einige aufschlussreiche Beispiele geben.
Es hängt alles von der Geschwindigkeit Ihrer Festplatten und der Größe Ihres Speichers und so weiter ab. – Gabe
Bearbeiten Sie zuerst Ihre Frage! ** Das Hinzufügen von ** Indizes kann eine Abfrage nur schneller, niemals langsamer machen. Was Sie damit zu tun haben, heißt, dass der Abfrageoptimierer ** USE ** einen Index verwendet, der eigentlich die eigenen Befehle außer Kraft setzt ... Das kann die Abfrage verlangsamen –
@Charles Bretana: Hinzufügen eines Index-CAN Eine Abfrage wird langsamer ausgeführt, wenn der Optimierer einen fehlerhaften Plan auswählt oder wenn die Verwendung anderer Indizes beeinträchtigt wird. Das Hinzufügen eines Indexes verlangsamt im Allgemeinen das Einfügen/Aktualisieren/Löschen. – sqlvogel