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


26

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 SELECTkwerendy szybciej, ale również UPDATElub INSERTzapytania 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.



Dziękuję, @Nick. Przed opublikowaniem pytania dokładnie przeszukałem Google i dba.se.com. Moim zdaniem jest to raczej niezwiązane. Nie chcę wiedzieć, czy indeks jest wymagany, ale jak ustalić, kiedy tworzy się zbyt wiele indeksów, UPDATEa INSERTinstrukcje są zbyt wolne.
Uwe Keim,

3
Czy czytałeś tam odpowiedzi? Akceptowana odpowiedź, na przykład, prowadzi do niektórych skryptów analitycznych, które mogą pomóc w identyfikacji nieużywanych indeksów, które należy usunąć. Pomocne może okazać się udzielenie odpowiedzi na pytanie, kiedy masz „zbyt wiele” indeksów.
Nick Chammas,

Odpowiedzi:


24

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.


8

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.


Czy mogę zasugerować zmianę dwóch wystąpień „ na ” na „ zbyt ”, ponieważ nie mogę ich edytować, ponieważ moja edycja musiałaby zmienić minimum 6 znaków?
Uwe Keim
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.