Prawdopodobnie nie jest to problem indeksowania, ale projektowania danych. Normalizacja, żeby być precyzyjnym. Fakt, że musisz odpytywać różne wartości pola, a nawet chcesz dodać indeks, jest silnym wskaźnikiem, że pole powinno zostać znormalizowane do oddzielnej tabeli z (małym) kluczem sprzężenia. Wtedy odrębne wartości będą dostępne natychmiast po zeskanowaniu znacznie mniejszej tabeli obcej wyszukiwania.
Aktualizacja
W ramach obejścia możesz utworzyć widok indeksowany w agregacie przez pole „odrębne”. COUNT_BIG
jest agregatem dozwolonym w widokach indeksowanych:
create view vwDistinct
with schemabinding
as select x, count_big(*)
from schema.hugetable
group by x;
create clustered index cdxDistinct on vwDistinct(x);
select x from vwDistinct with (noexpand);