Odkryłem, że darmowy skrypt BlitzIndex Brenta Ozara Unlimited (napisany przez Kendrę Little) jest najlepszym sposobem izolowania niepotrzebnych indeksów (a także indeksów, które warto dodać, indeksów powielających działanie innych indeksów itp.)
http://www.brentozar.com/blitzindex/
Informuje, ile razy jakikolwiek indeks został odczytany od czasu ostatniego zresetowania zliczeń statystyk (lub utworzenia / odtworzenia indeksu).
Wydaje mi się, że pamiętam Brenta Ozara, który powiedział w webcastie, że dobrą zasadą jest nie więcej niż 10 indeksów dla tabeli, która jest często odczytywana, 20 dla tabel, które są danymi statycznymi / historycznymi / archiwalnymi, które nie będą się często zmieniać.
Jeśli nadal masz problemy z szybkością importu, oznacza to, że baza danych nie jest aktywnie przeszukiwana (być może poza godzinami pracy). Korzystne może być upuszczenie indeksu, zaimportowanie danych, a następnie ponowne zastosowanie indeksów. (Statystyki zostaną oczywiście zresetowane). Powodem tego jest to, że indeks (y) będą aktualizowane w miarę wchodzenia każdego rekordu, porządkowania stron, a to zajmuje czas i operacje we / wy dysku. Budowanie indeksów po wymaga pojedynczego skanowania tabeli.
Brak twardej i szybkiej reguły może wymagać eksperymentowania z tym w zależności od rodzaju indeksu i danych. Indeksy powinny być regularnie przeglądane, gdy zmieniają się potrzeby / zapytania.
sys.dm_db_index_usage_stats
zawiera te informacje.