MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jaki jest prawidłowy sposób indeksowania w MongoDB, gdy istnieje duża kombinacja pól

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Do jakiego poziomu MongoDB blokuje zapisy? (lub:co to znaczy za połączenie

  2. Dostęp do MongoDB z Go

  3. Kompilacje indeksu MongoDB — zapobieganie uruchamianiu nowych kompilacji przez użytkowników

  4. MongoDB $mod

  5. Tablica grupowa po odprężeniu i dopasowaniu