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

Author: Zaid Masud, 2010-06-10

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.

 42
Author: kristina,
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.

 -6
Author: chx,
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