Ogólnie rzecz biorąc, indeksy są przydatne tylko wtedy, gdy są ponad selektywne pole. Oznacza to, że liczba dokumentów, które mają określoną wartość, jest mała w stosunku do całkowitej liczby dokumentów.
To, co oznacza „małe”, zależy od zestawu danych i zapytania. Selektywność 1% jest całkiem bezpieczna przy podejmowaniu decyzji, czy indeks ma sens. Jeśli określona wartość istnieje, powiedzmy, 10% dokumentów, wykonanie skanowania tabeli może być bardziej wydajne niż użycie indeksu w odpowiednim polu.
Mając to na uwadze, niektóre z Twoich pól będą selektywne a niektórych nie będzie. Na przykład podejrzewam, że filtrowanie według „OK” nie będzie bardzo selektywne. Możesz wyeliminować pola nieselektywne z rozważań dotyczących indeksowania - jeśli ktoś chce, aby wszystkie zamówienia, które są "OK", bez żadnych innych warunków, wykonały skanowanie tabeli. Jeśli ktoś chce zamówień, które są „OK” i mają inne warunki, zostanie użyty dowolny indeks mający zastosowanie do innych warunków.
Teraz, gdy masz już pola selektywne (lub przynajmniej nieco selektywne), zastanów się, które zapytania są zarówno popularne, jak i selektywne. Na przykład, być może takim połączeniem byłaby marka+typ. Możesz dodać indeksy złożone, które pasują do popularnych zapytań, które mają być selektywne.
Co się stanie, jeśli ktoś filtruje tylko według marki? Może to być selektywne lub nie, w zależności od danych. Jeśli masz już złożony indeks dotyczący marki+typ, możesz pozostawić to w bazie danych, aby określić, czy zapytanie dotyczące tylko marki jest bardziej wydajne do wypełnienia za pomocą indeksu marka+typ, czy za pomocą skanowania kolekcji.
Kontynuuj w ten sposób z innymi popularnymi zapytaniami i polami.