Często muszę uruchamiać zapytania względem dużych tabel, które nie mają właściwego indeksu. Dlatego proszę DBA o utworzenie takiego indeksu. Pierwszą rzeczą, którą robi, jest przeglądanie statystyk tabeli i sprawdzanie wielkości przestrzeni indeksu.
Często kazał mi znaleźć alternatywne rozwiązanie, ponieważ „indeks jest już większy niż tabela”. Uważa, że indeks musi być mniejszy niż dane, ponieważ powiedział mi „czy widziałeś kiedyś indeks w książce? Jest znacznie mniejszy niż sama książka i tak powinien wyglądać indeks tabeli”.
Nie sądzę, aby jego filozofia była poprawna, ale nie mogę się z nim zmierzyć, ponieważ jest wiodącym DBA, a ja jestem programistą. Wydaje mi się, że jeśli zapytanie wymaga indeksu, indeks należy po prostu utworzyć, zamiast znajdować „obejścia”, które powodują, że SP są nieczytelne i niemożliwe do utrzymania.
Wybieram tylko wymagane kolumny. Problem polega na tym, że filtruję według daty, więc silnik koniecznie wykona skanowanie tabeli, aby dopasować kolumny. Kwerenda jest uruchamiana raz dziennie, w nocy, w celu zebrania statystyk, ale jej uruchomienie zajmuje 15 minut (mamy inną twardą i szybką zasadę: żadna procedura nie powinna zająć więcej niż 3 minuty).
DBA pokazało mi statystyki indeksu. W tej tabeli znajdowało się około 10 indeksów, z których użyto tylko 6 (statystyki pokazały zero trafień dla 4 z nich). To duży system z udziałem ponad 20 programistów. Indeksy zostały utworzone z dowolnego powodu i prawdopodobnie już nie są używane.
Jesteśmy zobowiązani do obsługi SQL Server 2008, ponieważ na tym działają testowe bazy danych. Ale wszyscy klienci są w 2014 i 2016 roku.