Prepared Statements in Drizzle ORM

From the Drizzle ORM cheat sheet · Prepared Statements & Raw SQL · verified Jul 2026

Prepared Statements

Pre-compile queries for repeated execution with different parameters.

typescript
import { eq, placeholder } from 'drizzle-orm';

// Create a prepared statement
const getUserById = db.select()
  .from(users)
  .where(eq(users.id, placeholder('id')))
  .prepare('get_user_by_id');

// Execute with different params
const user1 = await getUserById.execute({ id: 1 });
const user2 = await getUserById.execute({ id: 2 });
💡 Prepared stmts skip query planning on reuse
⚡ Use placeholder() for dynamic parameter slots
📌 Name the prepared stmt for DB-level caching
🟢 Works with select, insert, update, and delete
preparedplaceholderperformance

More Drizzle ORM tasks

Back to the full Drizzle ORM cheat sheet