Rozumiem, że w przypadku MongoDB, aby zapytanie wykorzystywało indeks złożony, musi używać WSZYSTKICH kluczy w indeksie lub przynajmniej niektórych kluczy zaczynając od lewej. Na przykład:Wskaźniki złożone z Mongo, używające mniej niż wszystkiego w zapytaniu
db.products.find({ "a":"foo", "b":"bar" })
Z przyjemnością wykorzystamy indeks złożony z {a, b, c}.
Jednakże, jeśli chcę zapytać:
db.products.find({"a":"foo", "c":"thing" })
wierzę, to nie może korzystać z indeksu. Można to rozwiązać, dodając banalny warunek do "b", np.
db.products.find({"a":"foo", "b":{ $ne : "" }, "c":"thing" })
Nawet jeśli nie zależy mi na wartości b. Powodem tego jest fakt, że obecnie mamy 45 milionów obiektów i będzie nadal rosnąć, więc chcemy skonsolidować nasze indeksy, aby zaoszczędzić na zasobach.
Wielkie dzięki.
możesz dać wyjaśnienia tych pytań? –
Twoje zrozumienie jest bezwzględnie prawdziwe w przypadku podwójnego indeksu złożonego, ale niekoniecznie jest prawdziwe w potrójnym indeksie złożonym. Używając objaśnienia zobaczysz, że indeks a, b, c będzie w rzeczywistości używany, gdy będziesz pytać o a, c. –