Contenido del curso
Database
- 3

Instalación de Docker en Windows, macOS y Ubuntu
01:35 min - 4

Configuración de Postgres en Docker Compose
09:18 min - 5

Conexión a Postgres en Docker: Terminal y PgAdmin
15:16 min - 6

Conexión de NestJS a Postgres con Node Postgres
07:28 min - 7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL
10:49 min - 8

Conexión a Bases de Datos con Variables de Entorno en Node.js
13:49 min
TypeORM
- 9

Implementación de TypeORM con NestJS en Proyectos Node.js
09:14 min - 10

Creación de Entidades en ORM para Tiendas Virtuales
07:46 min - 11

Implementación del Patrón Repository en NestJS con TypeORM
13:31 min - 12

Operaciones CRUD en ProductService usando TypeORM y Postgres
13:35 min - 13

Cambio de Postgres a MySQL en Docker para CRUD de Productos
17:28 min
Migraciones
Relaciones
- 18

Relaciones 1 a 1 en Bases de Datos con TimeORM
18:58 min - 19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios
10:28 min - 20

Relaciones Uno a Muchos en Bases de Datos con TypeORM
10:36 min - 21

Gestión de Relaciones Uno a Muchos en Controladores de API
10:27 min - 22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico
08:38 min - 23

Manipulación de Relaciones Muchos a Muchos en Controladores
15:08 min - 24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
19:08 min - 25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM
16:40 min - 26

CRUD de órdenes de compra y gestión de ítems en NestJS
30:07 min
Consultas
- 27

Paginación de Productos con Limit y Offset en Controladores API
10:37 min - 28

Filtrado de Precios con Rango Usando Between en Time Wareham
10:16 min - 29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones
Viendo ahora - 30

Buenas prácticas de nombramiento en JavaScript y bases de datos
17:52 min - 31

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55 min
Migración a NestJS 9 y TypeORM 0.3
Próximos pasos
Indexación de Parámetros en Bases de Datos: Uso y Precauciones
Resumen
Optimizar las consultas a tu base de datos es fundamental cuando trabajas con grandes volúmenes de información. La indexación es una técnica disponible tanto en bases de datos relacionales como no relacionales que permite resolver consultas de forma más rápida, y con TypeORM puedes implementarla directamente desde tus entidades con apenas unas líneas de código.
¿Qué es la indexación y por qué importa en tus consultas?
La indexación es un proceso mediante el cual la base de datos organiza internamente ciertos campos para acelerar las búsquedas que los involucren. Piensa en ello como el índice de un libro: en lugar de recorrer todas las páginas, vas directamente a la sección que necesitas. Cuando un campo está indexado, las consultas que filtran por ese campo responden notablemente más rápido [0:12].
Sin embargo, hay una advertencia importante: no debes indexar todos los campos indiscriminadamente. Si todo es prioritario para la base de datos, nada lo es realmente. La base de datos necesita poder priorizar, y agregar indexadores en todos lados anula esa ventaja.
¿Cómo agregar un índice a un campo con el decorador index?
Dentro de tu entidad, por ejemplo ProductEntity, puedes marcar un campo específico como indexado utilizando el decorador @Index() que se obtiene de TypeORM [0:30].
typescript import { Index } from 'typeorm';
@Index() @Column() price: number;
Con esta simple adición, el campo precio queda indexado. Esto significa que consultas como el filtro por precio que se implementó previamente van a responder más rápido gracias a la estructura interna que la base de datos genera para ese campo.
¿Cómo crear índices compuestos para múltiples campos?
Cuando necesitas optimizar búsquedas que involucran dos o más campos al mismo tiempo, puedes crear un índice compuesto. En lugar de colocar el decorador en cada campo individual, lo aplicas a nivel de la entidad completa, pasándole un array con los atributos que formarán el índice conjunto [1:05].
typescript @Index(['price', 'stock']) @Entity() export class ProductEntity { // ... }
Esto le indica a la base de datos que cuando se busque por precio y stock simultáneamente, la respuesta será más eficiente porque ambos campos están indexados de forma conjunta.
¿Qué pasos seguir después de agregar los índices?
Después de agregar los decoradores de indexación, es necesario correr una migración [1:30]. Esto se debe a que la indexación representa un cambio estructural en la base de datos. Una vez ejecutada la migración, los campos quedan indexados por defecto en la tabla de productos.
¿Cuándo conviene usar indexación en tu proyecto?
Elegir los campos correctos para indexar requiere criterio. Estas son las consideraciones clave:
- Indexa solo los campos que participan en consultas frecuentes o cotidianas.
- Evita indexar todos los atributos de una tabla, ya que la base de datos pierde la capacidad de priorizar.
- La diferencia de rendimiento se nota principalmente con grandes volúmenes de datos [2:05].
- Si tu base de datos es pequeña, la indexación no generará una mejora perceptible.
El decorador @Index() de TypeORM te da flexibilidad para indexar un solo parámetro o varios en conjunto. La clave está en ser estratégico: analiza qué consultas ejecutas con mayor frecuencia y cuáles manejan tablas con mucha información. Así podrás aplicar la indexación donde realmente marca la diferencia en el rendimiento de tu aplicación.