Mamy bardzo dużą bazę danych z setkami nieużywanych indeksów zgodnie ze statystykami DMV, które gromadzą się od ostatniego restartu serwera w lipcu. Jeden z naszych DBA wydał następujące przestrogi, które nie mają dla mnie sensu:
- Przed upuszczeniem indeksu musimy upewnić się, czy nie wymusza on ograniczenia wyjątkowości, ponieważ optymalizator kwerend może potrzebować tego indeksu.
- Za każdym razem, gdy tworzony jest Indeks, statystyki związane z tym indeksem są również tworzone w SQL Server. Kwerenda może nie korzystać z indeksu, ale może wykorzystywać statystyki. Możemy więc spotkać się z sytuacją, gdy po upuszczeniu indeksu wydajność określonego zapytania jest naprawdę zła. SQL Server nie przechowuje statystyk użytkowania statystyk. Chociaż w naszej bazie danych jest włączona funkcja „Automatyczne tworzenie statystyk”, nie wiem, które wszystkie parametry muszą zostać spełnione wewnętrznie, zanim optymalizator zapytań utworzy brakujące statystyki.
Jeśli chodzi o nr 1, wydaje mi się, że SQL Server faktycznie szuka indeksu w celu ustalenia niepowtarzalności przed wykonaniem operacji wstawiania / aktualizacji, a zatem indeks nie byłby wyświetlany jako nieużywany.
Jeśli chodzi o # 2, czy to naprawdę możliwe?
Nawiasem mówiąc, kiedy mówię, że indeks nie jest używany, mam na myśli brak poszukiwań i skanów.