Od czasu do czasu uruchamiając program Microsoft SQL Server Profiler, sugeruje mi kilka nowych indeksów i statystyk do stworzenia („... 97% szacowana poprawa ...”).
Z mojego zrozumienia każdą dodaną indeks może dokonać SQL SELECT
kwerendy szybciej, ale również UPDATE
lub INSERT
zapytania wolniejsze od indeksy muszą być skorygowane.
Zastanawiam się, kiedy mam „zbyt wiele” indeksów / statystyk?
Być może nie ma na to jednoznacznej odpowiedzi, ale jakaś praktyczna zasada.
sql-server
performance
index
index-tuning
Uwe Keim
źródło
źródło
UPDATE
aINSERT
instrukcje są zbyt wolne.Odpowiedzi:
Twój profil obciążenia jest najważniejszym czynnikiem w odpowiedzi na to pytanie.
Jeśli obciążenie wymaga intensywnego odczytu, indeksy powinny spełniać najcięższe lub najczęstsze zapytania.
Jeśli obciążenie wymaga intensywnego zapisu, ostrożnie indeksuj. Indeksuj, aby zaspokoić poszukiwania, których potrzebuje UPDATE, a także jeden lub dwa najdroższe SELECT.
Jeśli twój ładunek to OLAP, indeksuj oszczędnie, ponieważ i tak będziesz skanował tabele docelowe.
Skąd wiesz, że masz zbyt wiele indeksów?
Gdy widać, że niektóre z nich nie są używane przez żadne zapytania.
Częste USUWANIE, AKTUALIZACJA lub WSTAWIANIE pokazuje plan zapytań, który obejmuje kilka kosztownych zmian indeksu (tj. Wstawianie , aktualizowanie lub usuwanie indeksu klastrowanego ). Skorzystaj z własnego osądu, aby ustalić, czy kara na tych instrukcjach DML jest warta korzyści, którą otrzymujesz z indeksów, które muszą być aktualizowane.
źródło
Jeśli masz indeksy, które są utrzymywane, ale nigdy nie są używane (lub rzadko są używane), musisz mieć wiele indeksów. Jeśli wszystkie twoje indeksy są używane do poprawy wydajności użytkownika, to nie musisz ich zbyt wiele.
źródło