sql-optimization-patterns skill
✓ 検証済みクエリプランの分析、インデックス戦略、および効率的なSQLパターンの実装を通じて、データベースのパフォーマンスを最適化します。
- GitHubスター
- 42,413
- ファイル
- 2
- 最終コミット
- 2026年11月9日
- ライセンス
- MIT
- 許可されたツール
- —
sql-optimization-patterns skillは何をしますか
sql-optimization-patternsはAgent Skillsです。 クエリプランの分析、インデックス戦略、および効率的なSQLパターンの実装を通じて、データベースのパフォーマンスを最適化します。.
skillのSKILL.mdから生成された要約。
sql-optimization-patterns skill について
データベースのパフォーマンス向上と低速なクエリの解消が、このSKILLの主な機能です。開発者は、動作の遅延のデバッグ、効率的なデータベーススキーマの設計、およびデータベース全体の負荷やコストの削減にこれを利用します。エージェントが実行プランを分析したり、アプリケーションのレスポンスタイムを改善するためにN+1問題を解決したりする必要がある場合に特に有用です。
エージェントがPostgreSQLのEXPLAINまたはEXPLAIN ANALYZEの出力を解釈し、Seq Scanや非効率な結合方法などの問題を特定するタスクを割り当てられた際、このSKILLをロードすべきです。B-Tree、Hash、GIN、GiST、BRINを含む、さまざまなインデックスタイプの実装に関する具体的な戦略を提供します。また、SELECT * の回避や、テーブルを結合する前にデータをフィルタリングしてJOIN操作を最適化するといった、実践的なクエリパターンもカバーしています。
クエリの記述だけでなく、ANALYZEやVACUUMコマンドの実行といったデータベースのメンテナンス作業も支援します。インデックスの貼りすぎや、インデックスの使用を妨げる暗黙的な型変換といった、よくある落とし穴の特定にも役立ちます。システムビューを通じて統計情報を監視することで、データセットの増大に伴うスケーラビリティを維持するために、不足しているインデックスや使用されていないインデックスを特定できます。
エージェントができること
- 1クエリ実行プランの分析PostgreSQLのEXPLAIN出力を調査し、低速なフルテーブルスキャンを特定してクエリコストを推定します。
- 2特化型のインデックス戦略の実装データ取得を高速化するために、JSONBデータ用のGINや範囲クエリ用のB-Treeなど、特定のインデックスタイプを作成します。
- 3非効率なSQLパターンのリファクタリング不要なカラムの取得を避け、パフォーマンス向上のために結合ロジックを最適化するようにクエリを書き換えます。
- 4データベースメンテナンスの必要性の特定システム統計をクエリして、使用されていないインデックスや不足しているインデックスを見つけ出し、書き込みオーバーヘッドの削減と読み取り速度の向上を図ります。
skill の SKILL.md から作成されています。すべてのユースケースは、その引用と照合されています。
sql-optimization-patterns skillのインストール方法
各コマンドはskillフォルダをクライアントのskillsディレクトリにコピーします。読み込むには、クライアントを再起動するか新しいセッションを開始してください。プラグインにsql-optimization-patterns skillをインストールする
/plugin marketplace add wshobson/agents /plugin install developer-essentials@claude-code-workflows
Claude Codeにsql-optimization-patterns skillをインストールする
~/.claude/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.claude/skills/sql-optimization-patternsClaude Code (project)にsql-optimization-patterns skillをインストールする
.claude/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns .claude/skills/sql-optimization-patternsCodexにsql-optimization-patterns skillをインストールする
~/.agents/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.agents/skills/sql-optimization-patternsGemini CLIにsql-optimization-patterns skillをインストールする
~/.gemini/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.gemini/skills/sql-optimization-patternsClaude.aiにsql-optimization-patterns skillをインストールする
npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns sql-optimization-patterns && zip -r sql-optimization-patterns.zip sql-optimization-patterns # claude.ai → Customize → Skills → + → Create skill → Upload a skill → sql-optimization-patterns.zip
自動チェック
実行日 2026年11月15日完全なレポート →自動チェックに合格しました。これはセキュリティ監査ではありません。エージェントに実行させる前にスクリプトを読んでください。 チェックの仕組み
- ソースリポジトリがリンクされており、アクセス可能wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns is public and reachablegithub.com/wshobson/agents/tree/HEAD/plugins/developer-essen ↗合格
- オープンソースライセンス (OSI)MITspdx.org/licenses/MIT.html ↗合格
- 過去1年以内にコミットまたはリリースありLast commit 2026-11-09github.com/wshobson/agents/commits ↗合格
- スクリプトにダウンロード実行や認証情報の窃取がないNo scripts in the skill folder合格
- SKILL.md に隠れた指示がないNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/wshobson/agents/blob/HEAD/plugins/developer-essen ↗合格
- 事前許可ツールが限定されているNo pre-approved tools; the agent asks before using onegithub.com/wshobson/agents/blob/HEAD/plugins/developer-essen ↗合格
- SKILL.md が Agent Skills の形式に従っているValid name and description; says when to use it; 215 linesgithub.com/wshobson/agents/blob/HEAD/plugins/developer-essen ↗合格
SKILL.md
GitHubで表示SQL Optimization Patterns
Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis.
When to Use This Skill
- Debugging slow-running queries
- Designing performant database schemas
- Optimizing application response times
- Reducing database load and costs
- Improving scalability for growing datasets
- Analyzing EXPLAIN query plans
- Implementing efficient indexes
- Resolving N+1 query problems
Core Concepts
1. Query Execution Plans (EXPLAIN)
Understanding EXPLAIN output is fundamental to optimization.
PostgreSQL EXPLAIN:
-- Basic explain
EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
-- With actual execution stats
EXPLAIN ANALYZE
SELECT * FROM users WHERE email = 'user@example.com';
-- Verbose output with more details
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT u.*, o.order_total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at > NOW() - INTERVAL '30 days';
Key Metrics to Watch:
- Seq Scan: Full table scan (usually slow for large tables)
- Index Scan: Using index (good)
- Index Only Scan: Using index without touching table (best)
- Nested Loop: Join method (okay for small datasets)
- Hash Join: Join method (good for larger datasets)
- Merge Join: Join method (good for sorted data)
- Cost: Estimated query cost (lower is better)
- Rows: Estimated rows returned
- Actual Time: Real execution time
2. Index Strategies
Indexes are the most powerful optimization tool.
Index Types:
- B-Tree: Default, good for equality and range queries
- Hash: Only for equality (=) comparisons
- GIN: Full-text search, array queries, JSONB
- GiST: Geometric data, full-text search
- BRIN: Block Range INdex for very large tables with correlation
-- Standard B-Tree index
CREATE INDEX idx_users_email ON users(email);
-- Composite index (order matters!)
CREATE INDEX idx_orders_user_status ON orders(user_id, status);
-- Partial index (index subset of rows)
CREATE INDEX idx_active_users ON users(email)
WHERE status = 'active';
-- Expression index
CREATE INDEX idx_users_lower_email ON users(LOWER(email));
-- Covering index (include additional columns)
CREATE INDEX idx_users_email_covering ON users(email)
INCLUDE (name, created_at);
-- Full-text search index
CREATE INDEX idx_posts_search ON posts
USING GIN(to_tsvector('english', title || ' ' || body));
-- JSONB index
CREATE INDEX idx_metadata ON events USING GIN(metadata);
3. Query Optimization Patterns
Avoid SELECT *:
-- Bad: Fetches unnecessary columns
SELECT * FROM users WHERE id = 123;
-- Good: Fetch only what you need
SELECT id, email, name FROM users WHERE id = 123;
Use WHERE Clause Efficiently:
-- Bad: Function prevents index usage
SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
-- Good: Create functional index or use exact match
CREATE INDEX idx_users_email_lower ON users(LOWER(email));
-- Then:
SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
-- Or store normalized data
SELECT * FROM users WHERE email = 'user@example.com';
Optimize JOINs:
-- Bad: Cartesian product then filter
SELECT u.name, o.total
FROM users u, orders o
WHERE u.id = o.user_id AND u.created_at > '2024-01-01';
-- Good: Filter before join
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01';
-- Better: Filter both tables
SELECT u.name, o.total
FROM (SELECT * FROM users WHERE created_at > '2024-01-01') u
JOIN orders o ON u.id = o.user_id;
Detailed patterns and worked examples
Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Best Practices
- Index Selectively: Too many indexes slow down writes
- Monitor Query Performance: Use slow query logs
- Keep Statistics Updated: Run ANALYZE regularly
- Use Appropriate Data Types: Smaller types = better performance
- Normalize Thoughtfully: Balance normalization vs performance
- Cache Frequently Accessed Data: Use application-level caching
- Connection Pooling: Reuse database connections
- Regular Maintenance: VACUUM, ANALYZE, rebuild indexes
-- Update statistics
ANALYZE users;
ANALYZE VERBOSE orders;
-- Vacuum (PostgreSQL)
VACUUM ANALYZE users;
VACUUM FULL users; -- Reclaim space (locks table)
-- Reindex
REINDEX INDEX idx_users_email;
REINDEX TABLE users;
Common Pitfalls
- Over-Indexing: Each index slows down INSERT/UPDATE/DELETE
- Unused Indexes: Waste space and slow writes
- Missing Indexes: Slow queries, full table scans
- Implicit Type Conversion: Prevents index usage
- OR Conditions: Can't use indexes efficiently
- LIKE with Leading Wildcard:
LIKE '%abc'can't use index - Function in WHERE: Prevents index usage unless functional index exists
Monitoring Queries
-- Find slow queries (PostgreSQL)
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;
-- Find missing indexes (PostgreSQL)
SELECT
schemaname,
tablename,
seq_scan,
seq_tup_read,
idx_scan,
seq_tup_read / seq_scan AS avg_seq_tup_read
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_tup_read DESC
LIMIT 10;
-- Find unused indexes (PostgreSQL)
SELECT
schemaname,
tablename,
indexname,
idx_scan,
idx_tup_read,
idx_tup_fetch
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY pg_relation_size(indexrelid) DESC;
このスキルのファイル
2sql-optimization-patterns skillに関する質問
Claude Codeにsql-optimization-patterns skillをインストールするには
npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.claude/skills/sql-optimization-patternsを実行してください。Claude Codeは~/.claude/skills(すべてのプロジェクト)または.claude/skills(単一プロジェクト)からskillsを読み込み、説明がタスクに一致する場合にskillを使用します。
sql-optimization-patterns skillはどのクライアントで使用できますか
Agent Skills形式を読み込むすべてのクライアントで使用できます: Claude Code、Codex、Gemini CLI、claude.ai(ZIPとしてアップロード)。skill内のスクリプトは、クライアントがコード実行を許可した場合にのみ実行されます。
PostgreSQLでクエリ実行プランを分析するにはどうすればよいですか?
EXPLAINコマンドを使用できます。実際の実行統計を確認するにはEXPLAIN ANALYZEを、より詳細な出力が必要な場合はEXPLAIN (ANALYZE, BUFFERS, VERBOSE)を使用してください。