database-optimization
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDatabase Optimization
数据库性能优化
This skill optimizes database performance including query optimization, indexing strategies, N+1 problem resolution, and caching implementation.
本技能可优化数据库性能,包括查询优化、索引策略制定、N+1问题解决及缓存实现。
When to Use This Skill
适用场景
- When optimizing slow database queries
- When fixing N+1 query problems
- When designing indexes
- When implementing caching strategies
- When optimizing database migrations
- When improving database performance
- 优化慢数据库查询时
- 修复N+1查询问题时
- 设计索引时
- 实现缓存策略时
- 优化数据库迁移时
- 提升数据库整体性能时
What This Skill Does
技能功能
- Query Optimization: Analyzes and optimizes SQL queries
- Index Design: Creates appropriate indexes
- N+1 Resolution: Fixes N+1 query problems
- Caching: Implements caching layers (Redis, Memcached)
- Migration Optimization: Optimizes database migrations
- Performance Monitoring: Sets up query performance monitoring
- 查询优化:分析并优化SQL查询语句
- 索引设计:创建合适的索引
- N+1问题解决:修复N+1查询问题
- 缓存实现:搭建缓存层(Redis、Memcached)
- 迁移优化:优化数据库迁移流程
- 性能监控:配置查询性能监控
How to Use
使用方法
Optimize Queries
优化查询
Optimize this slow database queryFix the N+1 query problem in this codeOptimize this slow database queryFix the N+1 query problem in this codeSpecific Analysis
专项分析
Analyze query performance and suggest indexesAnalyze query performance and suggest indexesOptimization Areas
优化领域
Query Optimization
查询优化
Techniques:
- Use EXPLAIN ANALYZE
- Optimize JOINs
- Reduce data scanned
- Use appropriate indexes
- Avoid SELECT *
技巧:
- 使用EXPLAIN ANALYZE
- 优化JOIN操作
- 减少扫描的数据量
- 使用合适的索引
- 避免使用SELECT *
Index Design
索引设计
Strategies:
- Index frequently queried columns
- Composite indexes for multi-column queries
- Avoid over-indexing
- Monitor index usage
- Remove unused indexes
策略:
- 为频繁查询的列创建索引
- 为多列查询创建复合索引
- 避免过度索引
- 监控索引使用率
- 删除未使用的索引
N+1 Problem
N+1问题
Pattern:
python
undefined示例:
python
undefinedBad: N+1 queries
不良写法:N+1查询
users = User.all()
for user in users:
posts = Post.where(user_id=user.id) # N queries
users = User.all()
for user in users:
posts = Post.where(user_id=user.id) # N次查询
Good: Single query with JOIN
优化写法:单次JOIN查询
users = User.all().includes(:posts) # 1 query
undefinedusers = User.all().includes(:posts) # 1次查询
undefinedExamples
示例
Example 1: Query Optimization
示例1:查询优化
Input: Optimize slow user query
Output:
markdown
undefined输入:优化慢用户查询
输出:
markdown
undefinedDatabase Optimization: User Query
数据库优化:用户查询
Current Query
当前查询
sql
SELECT * FROM users
WHERE email = 'user@example.com';
-- Execution time: 450mssql
SELECT * FROM users
WHERE email = 'user@example.com';
-- 执行时间:450msAnalysis
分析
- Full table scan (no index on email)
- Scanning 1M+ rows
- 全表扫描(email列无索引)
- 扫描100万+行数据
Optimization
优化方案
sql
-- Add index
CREATE INDEX idx_users_email ON users(email);
-- Optimized query
SELECT id, email, name FROM users
WHERE email = 'user@example.com';
-- Execution time: 2mssql
-- 添加索引
CREATE INDEX idx_users_email ON users(email);
-- 优化后的查询
SELECT id, email, name FROM users
WHERE email = 'user@example.com';
-- 执行时间:2msImpact
优化效果
- Query time: 450ms → 2ms (99.5% improvement)
- Index size: ~50MB
undefined- 查询时间:450ms → 2ms(提升99.5%)
- 索引大小:约50MB
undefinedBest Practices
最佳实践
Database Optimization
数据库优化
- Measure First: Use EXPLAIN ANALYZE
- Index Strategically: Not every column needs an index
- Monitor: Track slow query logs
- Cache: Cache expensive queries
- Denormalize: When justified by read patterns
- 先测量再优化:使用EXPLAIN ANALYZE
- 策略性创建索引:并非每个列都需要索引
- 持续监控:跟踪慢查询日志
- 合理缓存:缓存开销大的查询
- 按需反规范化:当读取模式需要时
Reference Files
参考文件
- - Common query optimization patterns, anti-patterns, and caching strategies
references/query_patterns.md
- - 常见查询优化模式、反模式及缓存策略
references/query_patterns.md
Related Use Cases
相关用例
- Query optimization
- Index design
- N+1 problem resolution
- Caching implementation
- Database performance improvement
- 查询优化
- 索引设计
- N+1问题解决
- 缓存实现
- 数据库性能提升