it-swarm.dev

Jak się dowiedzieć, kiedy / czy mam zbyt wiele indeksów?

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żdy dodany indeks może przyspieszyć zapytanie SQL SELECT, ale również zapytanie UPDATE lub INSERT wolniej, ponieważ indeksy muszą zostać dostosowane.

Zastanawiam się, kiedy mam „zbyt wiele” indeksów/statystyk?

Być może nie ma na to jednoznacznej odpowiedzi, ale jakaś praktyczna zasada.

27
Uwe Keim

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 jeden, oszczędnie indeksuj, ponieważ i tak będziesz skanował tabele docelowe).

Skąd wiesz, że masz zbyt wiele indeksów?

  • Gdy zobaczysz, że niektóre z nich nie są używane przez jakiekolwiek zapytania.

  • Częste DELETE, UPDATE lub INSERT pokazuje plan zapytań, który obejmuje kilka kosztownych zmian indeksu (tj. Indeks nieklastrowany wstaw , aktualizacja lub suń ) . Skorzystaj z własnego osądu, aby ustalić, czy kara za te instrukcje DML jest warta zysku, jaki otrzymujesz z indeksów, które muszą zostać zaktualizowane.

24
Nick Chammas

Jeśli masz indeksy, które są utrzymywane, ale nigdy nie są używane (lub rzadko są używane), masz zbyt wiele indeksów. Jeśli wszystkie Twoje indeksy są używane do poprawy wydajności użytkownika, nie masz ich zbyt wiele.

8
mrdenny