Descripción general de los índices

Solo es relevante para la edición Enterprise de Cloud Firestore.

En esta página, se describe la indexación para Cloud Firestore con compatibilidad con MongoDB. De forma predeterminada, Cloud Firestore con compatibilidad con MongoDB no crea ningún índice. Para mejorar el rendimiento de la base de datos, crea índices para las consultas que se usan con mayor frecuencia.

Los índices tienen un gran impacto en el rendimiento de una base de datos. Si existe un índice para una consulta, la base de datos puede devolver resultados de manera eficiente, ya que reduce la cantidad de datos que se deben analizar y el trabajo necesario para ordenar los resultados. Sin embargo, las entradas de índice aumentan los costos de almacenamiento y la cantidad de trabajo que se realiza durante una operación de escritura en los campos indexados.

Definición y estructura de los índices

Un índice consta de lo siguiente:

  • ID de una colección
  • una lista de los campos de la colección determinada
  • un orden, ya sea ascendente o descendente, para cada campo

Un índice también puede habilitar las opciones sparse y multikey.

Orden de los índices

El orden y la dirección de clasificación de cada campo definen de forma única el índice. Por ejemplo, los siguientes índices son distintos y no se pueden intercambiar:

Colección Campos
cities país (ascendente), población (descendente)
cities población (descendente), país (ascendente)

Cuando crees un índice para admitir una consulta, incluye los campos en el mismo orden que en la consulta.

Densidad de indexación

De forma predeterminada, las entradas de índice almacenan datos de todos los documentos de una colección. Esto se conoce como índice no disperso. Se agregará una entrada de índice para un documento, independientemente de si el documento contiene alguno de los campos especificados en el índice. Los campos no existentes se tratan como si tuvieran un valor NULL cuando se generan entradas de índice. Para cambiar este comportamiento, puedes definir el índice como un índice disperso.

Índices dispersos

En un índice disperso, solo se indexan los documentos de la colección que contienen un valor (incluido el nulo) para al menos uno de los campos indexados. Un índice disperso reduce los costos de almacenamiento y puede mejorar el rendimiento.

Índices de varias claves para valores de array

Si creas un índice en un campo que contiene valores de array, debes crear un índice de varias claves. Un índice normal no puede indexar valores de array. Un índice de varias claves admite hasta un campo de array en la definición del índice y se puede usar para operaciones que recorren valores de array.

Solo usa índices de varias claves si sabes que necesitas indexar valores de array. Los índices regulares tienen ventajas cuando se procesa una consulta. Por ejemplo, los índices regulares pueden filtrar valores dentro de un rango de manera más eficiente.

Las siguientes situaciones generan errores cuando se trabaja con valores de array y con índices de varias claves:

  • Una operación intenta agregar un valor de array a un campo indexado por un índice regular. Para agregar el valor del array, debes borrar los índices regulares existentes en ese campo y volver a crearlos como índices de varias claves.
  • Intentas crear un índice normal en un campo que contiene un valor de array. Debes crear un índice de varias claves o borrar los valores del array.
  • Una operación intenta indexar varios campos con valores de array. No puedes tener más de un campo con un valor de array en un índice de varias claves. Para continuar, modifica tu modelo de datos o las definiciones de tu índice.
  • Intentas crear un índice de varias claves en el que dos rutas de campo comparten un prefijo común, como users.posts y users.zip.

Soluciona problemas de errores en la compilación de índices

Es posible que encuentres errores en la compilación de los índices cuando los administres. Una operación de indexación puede fallar si la base de datos encuentra un problema con los datos. Las operaciones de indexación pueden fallar por los siguientes motivos:

  • Alcanzaste un límite de indexación. Por ejemplo, es posible que la operación haya alcanzado la cantidad máxima de entradas permitidas en un índice de un documento. Si falla la creación de los índices, aparecerá un mensaje de error. Si no alcanzaste un límite de índices, reintenta la operación de índices.
  • Se requiere un índice de varias claves. Al menos uno de los campos indexados contiene un valor de array. Para continuar, debes usar un índice de varias claves o borrar los valores del array.
  • Una operación intenta indexar varios campos con valores de array. No puedes tener más de un campo con un valor de array en un índice de varias claves. Para continuar, modifica tu modelo de datos o las definiciones de tu índice.

¿Qué sigue?