sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB ¿Muchos índices versus índice único en una matriz de subdocumentos?

Básicamente, esto se reduce a si 10 índices de tamaño N son más eficientes que un índice de tamaño N * 10. Si solo observa las lecturas, los índices separados siempre deberían ser más rápidos. Los recorridos de árbol b asociados examinarán un conjunto de claves más pequeño, etc.

Sin embargo, hay un par de puntos a considerar:

  • Los índices en los campos de la matriz básicamente indexan cada elemento de la matriz por separado. Como tal, la sobrecarga de búsqueda será como máximo de 1 a 2 pasos adicionales durante la caminata del árbol b, lo que es un impacto insignificante en el rendimiento. En otras palabras, serán casi tan rápidos.
  • Tener 10 índices puede significar que cada actualización/inserción requerirá que se actualice más de un índice (dependiendo de si sus índices comparten un campo o si actualiza más de 1 marca de tiempo a la vez). Esta es una consideración de rendimiento importante.
  • Usar un índice de matriz hace que sea un poco más fácil agregar marcas de tiempo adicionales (por ejemplo, Timestamp10).
  • Hay un límite en la cantidad de espacios de nombres que puede usar por base de datos (24k) y cada índice ocupa uno. Si crea un índice separado por campo, esto podría convertirse en un problema.
  • Lo más importante es que el índice de matriz es mucho más sencillo y simplificará su código y, por lo tanto, la capacidad de mantenimiento. Dadas las diferencias de rendimiento limitadas, diría que esta es la motivación más fuerte para optar por un índice de matriz aquí.