laravel-database-optimization
Laravel database optimization patterns. Use when writing Eloquent queries, creating migrations, configuring caching, debugging slow queries, or optimizing database performance. Triggers on tasks involving N+1 queries, indexing, Redis caching, pagination, or database transactions.
By asyrafhussin · 720 installs
npx skills add asyrafhussin/agent-skills --skill laravel-database-optimization
Source repository · Upstream listing
Laravel Database Optimization
Comprehensive database optimization guide for Laravel 13 applications. Contains 33 rules across 9 categories for writing performant database queries, proper indexing, efficient caching, naming conventions, and debugging slow queries in Laravel 13.
Metadata
Version: 1.1.0
Framework: Laravel 13.x
PHP: 8.3+
When to Apply
Reference these guidelines when:
Writing Eloquent queries or using the query builder
Diagnosing and fixing N+1 query problems
Adding database indexes to migrations
Implementing Redis or cache based optimizations
Paginating or processing large datasets
Wrapping operations in database transactions
Creating or modifying migrations for production databases
Debugging slow queries with EXPLAIN or Laravel Debugbar
Rule Categories by Priority
Priority Category Impact Prefix
1 Query Performance & N+1 CRITICAL query
2 Indexing Strategies CRITICAL index
3 Eloquent Optimization HIGH eloquent
4 Caching with Redis HIGH cache
5 Pagination & Large Datasets HIGH data
6 Transactions & Locking HIGH lock
7 Migrations HIGH migrate
8 Query Debugging MEDIUM debug
9 Naming & Structure HIGH naming
Quick Reference
1. Query Performance & N+1 (CRITICAL)
query eager loading Use eager loading to eliminate N+1 queries
query prevent lazy loading Prevent lazy loading in development
query auto eager loading Configure automatic eager loading on models
query select columns Select only needed columns instead of SELECT
2. Indexing Strategies (CRITICAL)
index foreign keys Index all foreign key columns
index composite indexes Create composite indexes for multi column queries
index covering indexes Use covering indexes for read heavy queries
index full text Use full text indexes for search functionality
3. Eloquent Optimization (HIGH)
eloquent query builder hot paths Use query builder for performance critical paths
eloquent with count aggregates Use withCount instead of loading relations to count
eloquent subquery selects Use subquery selects to avoid extra queries
eloquent where has optimization Optimize whereHas with whereIn subqueries
4. Caching with Redis (HIGH)
cache remember Use Cache::remember for expensive queries
cache invalidation Invalidate cache on model changes
cache tags Use cache tags for group invalidation
cache ttl Set appropriate TTL values for cached data
5. Pagination & Large Datasets (HIGH)
data cursor pagination Use cursor pagination for large datasets
data chunk by id Process large datasets with chunkById
data cursor iteration Use lazy cursors for memory efficient iteration
data avoid unbounded Never use unbounded queries on large tables
6. Transactions & Locking (HIGH)
lock short transactions Keep transactions short and focused
lock deadlock retry Implement deadlock retry logic
lock pessimistic locking Use pessimistic locking for critical updates
7. Migrations (HIGH)
migrate zero downtime Write zero downtime migrations
migrate concurrent indexes Create indexes concurrently in production
migrate safe column additions Add columns safely without locking tables
8. Query Debugging (MEDIUM)
debug explain analyze Use EXPLAIN ANALYZE to understand query plans
debug laravel debugbar Use Laravel Debugbar to find query bottlenecks
debug slow query log Enable and monitor slow query logs
9. Naming & Structure (HIGH)
naming tables Table naming conventions (plural snake case, pivot alphabetical)
naming columns Column naming conventions (FKs, booleans, timestamps, polymorphic)
naming relationships Relationship method naming (singular/plural matching)
naming migrations Migration and index naming conventions
Essential Patterns
Prevent Lazy Loading in Development
Cache Expensive Queries with Redis
Cursor Pagination for Large Datasets
Aggregate Counts Without Loading Relations
Process Large Datasets with chunkById
Short Database Transactions
How to Use
Read individual rule files for detailed explanations and code examples:
Each rule file contains:
YAML frontmatter with metadata (title, impact, tags)
Brief explanation of why it matters
Bad Example with explanation
Good Example with explanation
Laravel 13 and PHP 8.3 specific context and references
References
[Laravel Eloquent](https://laravel.com/docs/13.x/eloquent)
[Laravel Queries](https://laravel.com/docs/13.x/queries)
[Laravel Cache](https://laravel.com/docs/13.x/cache)
[Laravel Pagination](https://laravel.com/docs/13.x/pagination)
[Laravel Migrations](https://laravel.com/docs/13.x/migrations)
[Laravel Redis](https://laravel.com/docs/13.x/redis)
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md