Jak powiedział @MartinSmith, jeśli kiedykolwiek uaktualnisz do SQL 2008, filtrowany indeks byłby idealnym rozwiązaniem. Jednak w międzyczasie jako ogólny przypadek KAŻDY dodany indeks wydłuży czas ładowania. Małe indeksy mniej niż duże.
Jedną rzeczą, na którą chciałbym spojrzeć, jest posiadanie istniejącego indeksu, który można modyfikować. Zakładając, że twoje istniejące zapytania używają danego indeksu, następnie dodanie kolumny bitów na końcu tego indeksu powinno mieć minimalny wpływ na wstawki i pozytywny efekt, na który patrzysz na swoje zapytania.
Następną rzeczą do obejrzenia jest „Czy mam już wiele indeksów?” Nie ma twardej i szybkiej reguły dotyczącej tego, czym jest „dużo”, ale zwykle stosuję regułę 10 indeksów, która jest limitem, chyba że NAPRAWDĘ potrzebuję nowej.
Ostatnia myśl, przetestuj to na instancji testowej. Skonfiguruj tabelę z kilkoma milionami wierszy, uruchom na niej obciążenie, dodaj indeks, a następnie uruchom ponownie ładunek i sprawdź, czy zauważysz znaczący wzrost czasu ładowania.
Tylko Ty naprawdę możesz zdecydować, co jest „znaczące”. Mam maszyny, w których dodanie 5 minut do czasu ładowania jest „znaczące” i inne, w których mogłem bezpiecznie zaobserwować wzrost o kilka godzin.
EDYTOWAĆ:
Inną opcją jest podzielenie tabeli na partycje. Być może będziesz musiał użyć widoku podzielonego na partycje, jeśli nie korzystasz z wersji Enterprise, ale mimo to powinno to pomóc. Umieszczasz swoje bity 0 w jednej partycji, a bity 1 w innej. Zakładając, że wstawiasz tylko jedną wersję lub drugą, możesz nawet przyspieszyć wstawianie.