kiedy indeksować wiele kluczy w mongodb
Powiedzmy, że mam dokument z polami: price I: qty. Czasami chcę znaleźć wszystkie dokumenty pasujące do podanych: price I: qty, a innym razem będzie to: price on its own lub: qty on its own.
Zindeksowałem już klucze: price I: qty, ale czy muszę również utworzyć indeks złożony na obu razem, czy wystarczy indeks pojedynczego klucza?
Edit: znalazłem ten artykuł na stronie mongodb bardzo przydatne:
Http://www.mongodb.org/display/DOCS/Indexing + porady + i + FAQ
2 answers
Indeks na price
pomaga w zapytaniach na price
. Indeks na qty
pomaga w zapytaniach na qty
. Indeks na price
i qty
pomaga w zapytaniach na price
i zapytaniach na price
i qty
. To tak, jakby dostać dwa indeksy za cenę jednego. Nie pomoże to jednak w przypadku zapytań na qty
.
Powinieneś zminimalizować liczbę indeksów, więc upuść jeden z indeksów z pojedynczym kluczem i Utwórz indeks złożony zaczynający się od tego klucza.
Jako ogólna zasada, jeśli jesteś wykonanie zapytania na x
, y
, i z
, powinieneś mieć indeks jak {x:1, y:1, z:1}
. Ten indeks spowoduje szybkie wywołanie następujących zapytań:
db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})
To nie sprawi, że te zapytania będą szybkie:
db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})
Więc upewnij się, że Twoje zapytanie zawiera klucz(y) początkowy (e) indeksu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-11 13:03:04
Jeśli potrzebujesz: cena na własną rękę lub: ilość na własną rękę, indeks złożony nie zadziała.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-10 17:29:34