Descripción general de los índices
En esta página, se describe el indexado de Firestore con compatibilidad con MongoDB. Firestore con compatibilidad con MongoDB no crea ningún índice de forma predeterminada. Para mejorar el rendimiento de la base de datos, crea índices para las consultas que usas con más 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 mostrar 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 campos indexados.
Definición y estructura de los índices
Un índice consta de lo siguiente:
- un ID de colección
- una lista de campos de la colección determinada
- un orden, ascendente o descendente, para cada campo
Un índice también puede habilitar las opciones dispersa y multiclave.
Orden de los índices
El orden y la dirección de ordenamiento de cada campo definen el índice de forma inequívoca. Por ejemplo, los siguientes índices son dos índices distintos y no son intercambiables:
Colección | Campos |
---|---|
cities | país (ascendente), población (descendente) |
cities | population (descending), country (ascending), |
Cuando crees un índice para admitir una consulta, incluye los campos en el mismo orden que la consulta.
Densidad del índice
De forma predeterminada, las entradas de índice almacenan datos de todos los documentos de una colección. Esto se conoce como un índice no disperso. Se agregará una entrada de índice para un documento, independientemente de si contiene alguno de los campos especificados en el índice. Los campos inexistentes se consideran como valores NULL cuando se generan entradas de índice. Para cambiar este comportamiento, puedes definir el índice como uno disperso.
Índices dispersos
Un índice disperso solo indexa los documentos de la colección que contienen un valor (incluidos los nulos) 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.
Usa índices de varias claves solo si sabes que necesitas indexar valores de array. Los índices normales tienen ventajas cuando se procesa una consulta. Por ejemplo, los índices normales 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 índices de varias claves:
- Una operación intenta agregar un valor de array a un campo indexado por un índice normal. Para agregar el valor del array, debes borrar los índices normales 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 tus definiciones de índices.
- Intentas crear un índice de varias claves en el que dos rutas de campo comparten un prefijo común, como
users.posts
yusers.zip
.
Soluciona problemas de errores de compilación de índices
Es posible que encuentres errores en la compilación de los índices cuando administres tus índices. 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 índice. 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 del índice, verás un mensaje de error. Si no alcanzaste un límite de índices, vuelve a intentar 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 tus definiciones de índices.
¿Qué sigue?
- Obtén más información para crear y administrar índices