Ab und zu wird Microsoft SQL Server Profiler ausgeführt, und es werden eine Reihe neuer zu erstellender Indizes und Statistiken vorgeschlagen ("... 97% geschätzte Verbesserung ...").
Nach meinem Verständnis kann jeder hinzugefügte Index eine SQL- SELECT
Abfrage beschleunigen, aber auch eine UPDATE
oder eine INSERT
Abfrage verlangsamen, da die Indizes angepasst werden müssen.
Was ich mich frage, ist, wann ich "zu viele" Indizes / Statistiken habe?
Vielleicht gibt es darauf keine eindeutige Antwort, aber eine Faustregel.
sql-server
performance
index
index-tuning
Uwe Keim
quelle
quelle
UPDATE
undINSERT
Anweisungen zu langsam sind.Antworten:
Ihr Lastprofil ist der wichtigste Faktor bei der Beantwortung dieser Frage.
Wenn Ihre Last viel Lesezugriff erfordert, möchten Sie, dass Indizes Ihre häufigsten oder schwersten Abfragen erfüllen.
Wenn Ihre Last schreibintensiv ist, indizieren Sie sie sorgfältig. Ein Index, um beispielsweise die Anforderungen eines UPDATE-Suchvorgangs zu erfüllen, sowie ein oder zwei der teuersten SELECTs.
Wenn es sich bei Ihrer Last um eine OLAP-Last handelt, indizieren Sie sie sparsam, da Sie die Zieltabellen trotzdem durchsuchen werden.
Woher wissen Sie, dass Sie zu viele Indizes haben?
Wenn Sie sehen, dass einige von ihnen nicht von Abfragen verwendet werden.
Ein häufiges LÖSCHEN, AKTUALISIEREN oder EINFÜGEN zeigt einen Abfrageplan an, der mehrere kostspielige Indexänderungen umfasst (dh Einfügen , Aktualisieren oder Löschen eines nicht gruppierten Index ). Verwenden Sie Ihr Urteilsvermögen, um festzustellen, ob die Strafe für diese DML-Anweisungen den Gewinn wert ist, den Sie durch die zu aktualisierenden Indizes erzielen.
quelle
Wenn Sie Indizes haben, die gepflegt werden, aber nie verwendet werden (oder selten verwendet werden), dann haben Sie zu viele Indizes. Wenn alle Ihre Indizes verwendet werden, um die Benutzerleistung zu verbessern, müssen Sie nicht zu viele.
quelle