Creación y gestión de índices en Firestore para optimizar consultas
Clase 21 de 32 • Curso de Firebase 5 para Web
Contenido del curso
Consola Web de Administración
Autenticación de Usuarios
- 6

Servicios de autenticación de Firebase
06:30 min - 7

Crear usuarios con Firebase Authentication
13:12 min - 8

Autenticación de Usuarios con Firebase: Registro y Verificación de Email
15:02 min - 9

Autenticación con Google usando Firebase en aplicaciones web
06:22 min - 10

Login con Facebook en Firebase
09:47 min - 11

Gestión de Autenticación de Usuarios con Firebase
11:42 min - 12

Gestión de usuarios en consola Firebase
05:05 min - 13

Importar y exportar usuarios de Firebase
04:17 min
Gestión de la Base de Datos
- 14

Firestore vs Realtime Database: por qué migrar
08:36 min - 15
Comparación entre Realtime Database y Firestore de Firebase
02:11 min - 16

Habilitar Firestore en Firebase Console
09:53 min - 17

Cómo insertar datos en Firestore con validación
10:53 min - 18

Consultas en Tiempo Real con Firestore para Aplicaciones Web
15:01 min - 19

Operaciones avanzadas de Firestore
13:12 min - 20

Reglas de seguridad básicas en Firestore
08:07 min - 21

Creación y gestión de índices en Firestore para optimizar consultas
Viendo ahora
Almacenamiento de archivos
Hosting
Notificaciones Push
Conclusiones
Los índices en Firestore son clave para que las consultas sean rápidas y escalables. Al ordenar por varios campos o combinar filtros con ordenamientos, surge el mensaje de “requiere un índice”. Aquí entenderás por qué sucede, cómo resolverlo desde la consola y cómo escribir consultas con orderBy y where de forma eficiente.
¿Qué es un índice en Firestore y por qué acelera las consultas?
Un índice permite encontrar datos sin recorrer toda la colección. Piensa en la tabla de contenido de un libro: vas directo al tema sin leer cada página. Así, Firestore usa índices para ubicar registros exactos de forma rápida, impactando el rendimiento de tu aplicación.
- Firestore crea índices de un solo campo automáticamente. Para cada campo genera orden ascendente y descendente, soportando búsquedas y tipos matriz.
- Cuando combinas varios campos en filtros u ordenamientos, necesitas un índice compuesto.
¿Cuándo basta con índices automáticos?
- Cuando ordenas por un único campo con orderBy en forma ascendente o descendente.
- Cuando filtras u ordenas por un solo campo en consultas simples.
¿Cuándo necesitas un índice compuesto?
- Cuando usas dos orderBy, por ejemplo: fecha ascendente y título ascendente.
- Cuando mezclas where con orderBy, como autor ascendente y fecha ascendente.
- Si cambias la dirección de uno de los campos (ejemplo: fecha ascendente y título descendente), se requiere otro índice diferente.
- Si cambias el operador del filtro (por ejemplo, menor o igual), se construye un nuevo índice compuesto con esos campos.
¿Cómo crear el índice recomendado desde la consola?
Al fallar la consulta, Firestore muestra un enlace en el error. Al hacer clic, te lleva a la consola y sugiere exactamente el índice que falta: la colección, los campos y su dirección.
- Verás la colección y la configuración propuesta, por ejemplo: fecha ascendente y título ascendente.
- Haz clic en Crear índice y espera a que se habilite.
- Una vez creado, las consultas vuelven a funcionar y se sienten más ágiles.
¿Qué pasa con direcciones diferentes (asc/desc)?
- Cambiar una dirección implica un índice nuevo. Si antes usaste título ascendente y ahora necesitas título descendente con el mismo conjunto de campos, debes crear otro índice.
¿Cuánto tarda y cómo verificar?
- El proceso toma unos segundos. Cuando el estado cambia a habilitado, actualiza la vista y verás los resultados ordenados correctamente.
¿Cómo escribir consultas con ordenamientos y filtros?
Escribe consultas claras y consistentes con los índices que tengas. Cuando el error indique “requiere un índice”, crea el recomendado por la consola.
Orden por un campo
import { collection, query, orderBy } from "firebase/firestore";
const q = query(
collection(db, "posts"),
orderBy("fecha", "asc")
);
Orden por dos campos (requiere índice compuesto)
import { collection, query, orderBy } from "firebase/firestore";
const q = query(
collection(db, "posts"),
orderBy("fecha", "asc"),
orderBy("titulo", "asc")
);
Filtro por usuario y orden por fecha (requiere índice compuesto)
import { collection, query, where, orderBy } from "firebase/firestore";
const q = query(
collection(db, "posts"),
where("autor", "==", userId),
orderBy("fecha", "asc")
);
Cambio de operador en el filtro (nuevo índice compuesto)
import { collection, query, where, orderBy } from "firebase/firestore";
const q = query(
collection(db, "posts"),
where("fecha", "<=", limiteFecha),
orderBy("fecha", "asc")
);
En síntesis: usa orderBy para ordenar por fecha y título; combina where para autor o rangos de fecha; y crea índices compuestos cuando la consola lo sugiera. Los índices son esenciales para el rendimiento y garantizan respuestas rápidas incluso con datos crecientes.
¿Te quedó alguna duda sobre combinaciones de filtros y direcciones de ordenamiento en Firestore? Cuéntame tu caso en los comentarios y lo resolvemos juntos.