MongoDB Indexação: createIndex() e dropIndex()

⚡ Resumo Inteligente

MongoDB Os índices armazenam um subconjunto ordenado dos campos de uma coleção, permitindo que as consultas localizem documentos sem precisar examinar todos os registros. Os métodos `createIndex`, `getIndexes` e `dropIndex` criam, listam e removem essas estruturas essenciais para o desempenho.

  • 🚀 Objetivo: Índices permitem MongoDB Ignore as varreduras completas da coleção para leituras mais rápidas.
  • 🛠️ criarÍndice: Constrói índices de campo único ou compostos em ordem crescente ou decrescente.
  • 🔍 obterÍndices: Lista todos os índices de uma coleção, incluindo o _id padrão.
  • 🗑️ dropIndex: Remove um índice; dropIndexes limpa todos, exceto _id.
  • ⚖️ Troca: Índices em excesso tornam as operações de inserção, atualização e exclusão mais lentas.
  • 🤖 Ajuste de IA: Os assistentes recomendam e geram automaticamente os índices corretos.

MongoDB Indexação createIndex dropIndex

Quais são MongoDB Índices?

Os índices são muito importantes em qualquer banco de dados, e com MongoDB Não há diferença. Com o uso de índices, a execução de consultas em MongoDB fica mais eficiente.

Se você tivesse uma coleção com milhares de documentos sem índices e, em seguida, fizesse uma consulta para encontrar determinados documentos, então, nesse caso... MongoDB precisaria digitalizar toda a coleção para encontrar os documentos. Mas se você tivesse índices, MongoDB usaria esses índices para limitar o número de documentos que deveriam ser pesquisados ​​na coleção.

Os índices são conjuntos de dados especiais que armazenam uma parte parcial dos dados da coleção. Como os dados são parciais, tornam-se mais fáceis de ler. Esse conjunto parcial armazena o valor de um campo específico, ou de um conjunto de campos, ordenados pelo valor do campo.

Compreendendo o impacto dos índices

Embora a introdução tenha demonstrado que os índices são benéficos para consultas, o excesso de índices pode tornar outras operações, como as de inserção, exclusão e atualização, mais lentas.

Se operações frequentes de inserção, exclusão e atualização forem realizadas nos documentos, os índices precisarão ser alterados com frequência, o que representará uma sobrecarga para a coleção.

O exemplo abaixo mostra quais valores de campo podem constituir um índice em uma coleção. Um índice pode ser baseado em apenas um campo da coleção ou em vários campos da coleção.

No exemplo abaixo, o ID do funcionário é “1” e o funcionário éCode Os índices “AA” são usados ​​para indexar os documentos da coleção. Assim, quando uma consulta de pesquisa é realizada, esses índices serão usados ​​para encontrar os documentos necessários na coleção de forma rápida e eficiente.

Portanto, mesmo que a consulta de pesquisa seja baseada no funcionárioCode “AA”, esse documento seria devolvido.

Compreendendo o impacto dos índices

Como criar índices: createIndex()

Criando um índice em MongoDB é feito usando o criarIndex método.

O exemplo a seguir mostra como adicionar um índice a uma coleção. Vamos supor que temos nossa coleção de Funcionários, que possui os campos "Employeeid" e "EmployeeName".

Criar índices com createIndex

db.Employee.createIndex({Employeeid:1})

Code Explicação:

  1. O criarIndex O método é usado para criar um índice baseado no “Employeeid” do documento.
  2. O parâmetro “1” indica que, quando o índice for criado com os valores do campo “Employeeid”, eles deverão ser classificados em ordem crescente. Observe que isso é diferente do campo _id (que identifica exclusivamente cada documento). MongoDB é criado automaticamente. Os documentos agora serão classificados pelo Employeeid e não pelo campo _id.

Se o comando for executado com sucesso, a seguinte saída será exibida:

Saída:

saída do createIndex

  1. O parâmetro `numIndexesBefore: 1` indica o número de valores de campo nos índices antes da execução do comando. Cada coleção possui o campo `_id`, que também conta como um valor de campo, portanto, `numIndexesBefore` é igual a 1.
  2. O valor numIndexesAfter: 2 indica a quantidade de valores de campo nos índices após a execução do comando.
  3. A saída “ok: 1” especifica que a operação foi bem-sucedida e o novo índice foi adicionado à coleção.

O código acima mostra como criar um índice com base no valor de um único campo, mas também é possível criar um índice com base em vários valores de campo. O exemplo a seguir mostra como isso pode ser feito:

Criar índice composto em vários campos

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

O método createIndex agora leva em consideração múltiplos valores de campo, o que fará com que o índice seja criado com base em “Employeeid” e “EmployeeName”. Employeeid:1 e EmployeeName:1 indicam que o índice deve ser criado com base nesses dois valores de campo, sendo :1 indicativo de ordem crescente. Isso é conhecido como índice composto.

Como encontrar índices: getIndexes()

Encontrando um índice em MongoDB é feito usando o obterÍndices método. O exemplo a seguir mostra como isso pode ser feito:

Encontre índices com getIndexes

db.Employee.getIndexes()

O método getIndexes é usado para localizar todos os índices em uma coleção.

Se o comando for executado com sucesso, a seguinte saída será exibida:

Saída:

saída getIndexes

O resultado retorna um documento que mostra que existem dois índices na coleção: o campo _id e o campo Employeeid. O valor :1 indica que os valores dos campos no índice são criados em ordem crescente.

Como remover índices: dropIndex()

Remover um índice em MongoDB é feito usando o dropIndex método. O exemplo a seguir mostra como isso pode ser feito:

Índices de queda com dropIndex

db.Employee.dropIndex({Employeeid:1})

O método dropIndex recebe os valores dos campos que precisam ser removidos do índice.

Se o comando for executado com sucesso, a seguinte saída será exibida:

Saída:

saída dropIndex

  1. O valor nIndexesWas: 3 indica a quantidade de valores de campo nos índices antes da execução do comando. Cada coleção possui o campo _id, que também é contabilizado como um valor de campo.
  2. A saída ok: 1 especifica que a operação foi bem-sucedida e o campo “Employeeid” é removido do índice.

Para remover todos os índices de uma só vez em uma coleção, pode-se usar o comando `dropIndexes`. O exemplo a seguir mostra como isso pode ser feito:

Remova todos os índices com dropIndexes

db.Employee.dropIndexes()

O método dropIndexes eliminará todos os índices, exceto o índice _id.

Se o comando for executado com sucesso, a seguinte saída será exibida:

Saída:

saída dropIndexes

  1. O valor nIndexesWas: 2 indica o número de valores de campo nos índices antes da execução do comando.
  2. Cada coleção possui o campo _id, que também conta como um valor de campo e não será removido por MongoDBÉ isso que esta mensagem indica.
  3. A saída ok: 1 especifica que a operação foi bem-sucedida.

Perguntas Frequentes

Um índice de campo único classifica um campo e é adequado para consultas que filtram apenas por esse campo. Um índice composto abrange vários campos em uma única estrutura e é adequado para consultas que filtram ou classificam por esses campos em conjunto. Os índices compostos suportam até 32 campos.

O campo _id é MongoDBA chave primária de `_id` faz com que cada coleção receba automaticamente um índice `_id` exclusivo. Ele não pode ser removido. É por isso que `numIndexesBefore` começa em 1 mesmo antes de você adicionar qualquer índice personalizado.

Execute a consulta com .explain(“executionStats”). No plano vencedor, um estágio IXSCAN significa que um índice foi usado, enquanto um COLLSCAN significa MongoDB Digitalizei todos os documentos e um novo índice pode ajudar.

Use o estágio de agregação `$indexStats` para ver com que frequência cada índice é acessado. Índices com uso muito baixo desperdiçam espaço em disco e geram gravações lentas, portanto, remova-os com `dropIndex` para manter a coleção enxuta.

Ferramentas de IA analisam registros de consultas lentas e sugerem quais campos indexar. MongoDBO Performance Advisor classifica as recomendações do índice por impacto, ajudandoping Você adiciona índices de alto valor e ignora os redundantes.

Sim. Os assistentes do AI Copilot transformam solicitações em linguagem natural na sintaxe correta do createIndex, incluindo chaves ascendentes ou descendentes e ordem de campos compostos, e então explicam o índice resultante.

ESR significa Igualdade, Classificação e Intervalo. Ao criar um índice composto, coloque primeiro os campos de correspondência de igualdade, depois os campos de classificação e, por fim, os filtros de intervalo. Essa ordem permite MongoDB Utilize o índice da maneira mais eficiente possível.

Uma consulta coberta é respondida inteiramente a partir de um índice, sem a necessidade de ler os documentos. Isso ocorre quando todos os campos do filtro e da projeção residem no mesmo índice. MongoDB Retorna resultados mais rapidamente.

Resuma esta postagem com: