Índices compostos
Nesta página
Os índices compostos coletam e classificam dados de dois ou mais campos em cada documento em uma collection. Os dados são agrupados pelo primeiro campo no índice e, em seguida, por cada campo subsequente.
Por exemplo, a imagem seguinte mostra um índice composto onde os documentos são agrupados pela primeira vez pelo userid
em ordem crescente (alfabeticamente). Em seguida, os scores
para cada userid
são classificados em ordem decrescente:
A indexação de campos comumente sujeitos a queries aumenta a probabilidade de queries cobertas. Uma query coberta é uma query que pode ser satisfeita inteiramente usando um índice e não precisa examinar nenhum documento, o que leva a um desempenho muito melhor.
Para criar um índice composto, use o seguinte protótipo:
db.<collection>.createIndex( { <field1>: <sortOrder>, <field2>: <sortOrder>, ... <fieldN>: <sortOrder> } )
Você pode criar e gerenciar índices compostos na IU para implantações hospedadas no MongoDB Atlas.
Casos de uso
Se o aplicativo executar repetidamente uma query que contém múltiplos campos, é possível criar um índice composto para melhorar o desempenho dessa query. Por exemplo, um gerente de supermercado geralmente precisa procurar itens de estoque por nome e quantidade para determinar quais itens estão com estoque baixo. Você pode criar um índice composto nos campos item
e quantity
para melhorar o desempenho da query.
Um índice composto em campos comumente sujeitos a queries aumenta as chances de cobrir essas queries. As queries cobertas são queries que podem ser totalmente satisfeitas usando um índice, sem examinar nenhum documento. Isso otimiza o desempenho da query.
Começar
Para criar um índice composto, consulte Criar um índice composto.
Detalhes
Esta seção descreve detalhes técnicos e limitações para índices compostos.
Limite de campo
Um índice composto único pode conter até 32 campos.
Ordem do campo
A ordem dos campos indexados afeta a eficácia de um índice composto. Os índices compostos contêm referências a documentos de acordo com a ordem dos campos no índice. Para criar índices compostos eficientes, siga a regra ESR (Equality, Sort, Range [Igualdade, Classificação, Intervalo]).
Ordem de classificação
Os índices armazenam referências a campos em ordem de classificação crescente (1
) ou decrescente (-1
). Para índices compostos, a ordem de classificação pode determinar se o índice suporta uma operação de classificação. Para obter mais informações, consulte Ordem de classificação do índice composto.
Campos de índices hashed
Os índices compostos podem conter um único campo de índice com hash.
Prefixos de índices
Os prefixos de índices são os subconjuntos iniciais de campos indexados. Os índices compostos suportam queries em todos os campos incluídos no prefixo do índice.
Por exemplo, considere este índice composto:
{ "item": 1, "location": 1, "stock": 1 }
O índice tem estes prefixos de índice:
{ item: 1 }
{ item: 1, location: 1 }
O MongoDB pode usar o índice composto para suportar queries nessas combinações de campos:
item
item
elocation
item
,location
estock
O MongoDB também pode usar o índice para suportar uma query nos campos item
e stock
, já que o campo item
corresponde a um prefixo. No entanto, somente o campo item
no índice pode suportar essa query. A query não pode usar o campo stock
que segue location
.
Os campos de índice são analisados em ordem; se uma query omitir um prefixo de índice, ela não poderá usar nenhum campo de índice que siga esse prefixo.
O MongoDB não pode usar o índice composto para oferecer suporte a consultas sobre essas combinações de campos:
location
stock
location
estock
Sem o campo item
, nenhuma das combinações de campos anteriores corresponde a um índice de prefixo.
Dica
Remover índices redundantes
Se você tiver uma collection que tem tanto um índice composto quanto um índice em seu prefixo (por exemplo, { a: 1, b: 1 }
e { a: 1 }
), se nenhum índice tiver uma restrição esparsa ou única, você poderá remover o índice no prefixo ({ a: 1 }
). O MongoDB usa o índice composto em todas as situações que teria usado o índice prefixo.
Índices de compostos esparsos
Os índices compostos podem conter diferentes tipos de índices esparsos. A combinação de tipos de índice determina como o índice composto corresponde aos documentos.
Esta tabela resume o comportamento de um índice composto que contém diferentes tipos de índices esparsos:
Componentes do índice composto | Comportamento do índice composto |
---|---|
Ascending indexes Descending indexes | Somente indexa documentos que contêm um valor para pelo menos uma das chaves. |
Indexa um documento somente quando ele contém um valor para um dos campos | |
Somente indexa um documento quando ele corresponde a um dos campos |
Saiba mais
Para saber como criar índices compostos eficientes, consulte A regra ESR (Igualdade, classificação, intervalo).