Skip to content

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:

  1. La consulta SQL se compila a un formato binario ejecutable y se envía a la base de datos una sola vez.
  2. 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.
  3. 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
})