Quando indexar em várias chaves em MongoDB
-
26-09-2019 - |
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:
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á.