Acerca de los Sentencias Preparadas
El proceso general para usar sentencias preparadas incluye:
- Preparación: Se define la consulta SQL con marcadores de posición (placeholders) en lugar de valores concretos. Si necesita cambiar según un valor.
- Vinculación: Se vinculan los valores reales a los marcadores de posición.
- Ejecución: Se ejecuta la consulta con los valores vinculados.
Las sentencias preparadas en Drizzle ORM son una característica que mejora significativamente el rendimiento de las consultas a la base de datos. 1
Cuando se utiliza una sentencia preparada:
- La consulta SQL se compila a un formato binario ejecutable y se envía a la base de datos una sola vez.
- En las ejecuciones posteriores, el controlador de la base de datos puede reutilizar esta versión precompilada binaria de SQL, en lugar de tener que analizar la consulta cada vez.
- Esto proporciona beneficios de rendimiento extremos, especialmente en consultas SQL grandes.
Las sentencias preparadas son particularmente útiles en entornos serverless, donde pueden reutilizarse tanto las conexiones a la base de datos como las sentencias preparadas, lo que lleva a mejoras significativas en el rendimiento.
Para usar una sentencia preparada en Drizzle, se debe hacer lo siguiente:
const prepared = db.select().from(customers).prepare();
const res1 = await prepared.execute();const res2 = await prepared.execute();const res3 = await prepared.execute();En caso de necesitar cambiar el resultado según un valor se hace lo siguiente:
export const colorConsult = db.query.ColorProducto.findFirst({ where: inArray(ColorProducto.nombreColor, sql.placeholder("nombre")), columns: { colorId: true, },}).prepare();
const color = colorConsult.execute({ nombre: valor //en este caso debe ser un array de string})