PostgreSQL + Drizzle Performance Rules for Production SaaS
Production-ready PostgreSQL and Drizzle ORM performance rules for scalable SaaS applications.
Install via CLI
$ npx @airuleshub/cli@latest add postgresql-drizzle-performance-rules-for-production-saasRule Content
PostgreSQL + Drizzle Performance Rules for Production SaaS
Production-ready PostgreSQL and Drizzle ORM performance rules for scalable SaaS applications.
Database Query Performance
- Always use indexed columns in
WHEREclauses. - Prefer composite indexes when filtering by multiple frequently used columns.
- Avoid
SELECT *in production queries. Explicitly select only required columns. - Use
EXPLAIN ANALYZEbefore deploying complex queries. - Never run unbounded queries in API endpoints.
Pagination & Large Data Handling
- Use
LIMITandOFFSETcarefully. - Prefer keyset pagination for large datasets.
- Avoid loading large datasets into memory.
- Always paginate API responses returning collections.
Indexing Strategy
- Use partial indexes for frequently filtered subsets (e.g., active records).
- Create GIN indexes for full-text search (
tsvector). - Monitor index bloat and reindex periodically.
- Avoid over-indexing rarely queried columns.
Drizzle ORM Best Practices
- Avoid N+1 query patterns.
- Prefer server-side filtering over client-side filtering.
- Use transactions for multi-step writes.
- Keep ORM queries predictable and optimized.
- Avoid dynamic raw SQL unless necessary and always sanitize inputs.
Full-Text Search Optimization
- Use
tsvectorwith weighted fields. - Rank results using
ts_rank. - Create a GIN index on the search vector.
- Normalize search queries using
plainto_tsquery.
Data Modeling
- Use appropriate data types (
UUIDinstead oftextfor IDs when possible). - Avoid excessive
JSONBnesting. - Keep schema normalized unless denormalization is justified.
- Use foreign key constraints for relational integrity.
Production Safety
- Use connection pooling in production environments.
- Avoid blocking queries inside request lifecycles.
- Implement caching for frequently accessed rule lists.
- Move heavy data processing to background jobs.
- Monitor slow queries using PostgreSQL logs.
Observability & Monitoring
- Enable query logging in staging environments.
- Track performance regressions after migrations.
- Audit long-running transactions.
- Monitor connection pool exhaustion.
