Pergunta

Digamos que eu tenha um documento de item com: Preço e: Qty Fields. Às vezes, quero encontrar todos os documentos que correspondem a um dado: preço e: qty, e outras vezes será: preço por conta própria ou: Qty por conta própria.

Já indexei o: Preço e: Tectas Qty, mas também preciso criar um índice composto em ambos ou os índices de chave única são suficientes?

EDIT: Achei este artigo no site MongoDB muito útil:

http://www.mongodb.org/display/docs/indexing+advice+and+faq

Foi útil?

Solução

Um índice em price Ajuda com consultas em price. Um índice em qty Ajuda com consultas em qty. Um índice em price e qty Ajuda com consultas em price E consultas em price e qty. Então, é como obter dois índices pelo preço de um. Não ajudará para consultas em qty, no entanto.

Você deve minimizar o número de índices que possui, então solte um dos seus índices de chave única e crie um índice composto começando com essa chave.

Como regra geral, se você estiver fazendo uma consulta em x, y, e z, você deve ter um índice como {x:1, y:1, z:1}. Este índice fará com que as seguintes consultas rapidamente:

db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})

Não fará essas consultas rapidamente:

db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})

Portanto, verifique se sua consulta possui a (s) chave (s) inicial (s) de um índice.

Outras dicas

Se precisar: Preço por conta própria ou: Qty por conta própria, um índice composto não funcionará.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top