MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB Muitos Índices versus Índice Único na matriz de Sub-Documentos?


Isso basicamente se resume a se 10 índices de tamanho N são mais eficientes do que um índice de tamanho N * 10. Se você olhar apenas para leituras, os índices separados sempre devem ser mais rápidos. As caminhadas da b-tree associadas examinarão um conjunto de chaves menor, etc.

Porém, há alguns pontos a serem considerados:
  • Os índices em campos de array basicamente indexam cada elemento de array separadamente. Como tal, a sobrecarga de pesquisa será no máximo de 1 a 2 etapas adicionais durante a caminhada da árvore b, o que é um impacto insignificante no desempenho. Em outras palavras, eles serão quase tão rápidos.
  • Ter 10 índices pode significar que cada atualização/inserção exigirá que mais de um índice seja atualizado (dependendo se seus índices compartilham um campo ou se você atualiza mais de 1 carimbo de data/hora por vez). Essa é uma consideração significativa de desempenho.
  • O uso de um índice de matriz facilita um pouco a adição de carimbos de data/hora adicionais (por exemplo, Timestamp10).
  • Há um limite para o número de namespaces que você pode usar por banco de dados (24k) e cada índice ocupa um. Se você criar um índice separado por campo, isso pode se tornar um problema.
  • Mais importante, o índice de matriz é muito mais direto e simplificará seu código e, portanto, a manutenção. Dadas as diferenças de desempenho limitadas, eu diria que essa é a motivação mais forte para usar um índice de matriz aqui.