PostgreSQL
Description
PostgreSQL database patterns including queries, indexing, and optimization.
When to Use
- •PostgreSQL database operations
- •SQL query optimization
- •Schema design
Core Patterns
Basic Queries
sql
-- Select with filtering SELECT id, name, email FROM users WHERE active = true ORDER BY created_at DESC LIMIT 20 OFFSET 0; -- Join SELECT u.*, COUNT(p.id) as post_count FROM users u LEFT JOIN posts p ON p.user_id = u.id GROUP BY u.id;
Indexes
sql
-- Single column index CREATE INDEX idx_users_email ON users(email); -- Composite index CREATE INDEX idx_posts_user_date ON posts(user_id, created_at DESC); -- Partial index CREATE INDEX idx_active_users ON users(email) WHERE active = true;
Migrations
sql
-- Add column with default ALTER TABLE users ADD COLUMN role VARCHAR(50) DEFAULT 'user'; -- Add constraint ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);
Best Practices
- •Use indexes for filtered/sorted columns
- •Use EXPLAIN ANALYZE for slow queries
- •Avoid SELECT * in production
- •Use transactions for multiple operations
- •Use connection pooling
Common Pitfalls
- •N+1 queries: Use JOINs or batch loading
- •Missing indexes: Add indexes for WHERE/ORDER BY
- •Large transactions: Keep transactions short