Back to Skills

data-analyst-sql-optimization

verified

Apply SQL optimization patterns including index usage, query rewriting, JOIN optimization, and window functions. Use when improving query performance or analyzing slow queries. This skill provides comprehensive SQL optimization patterns and best practices: - N+1 query elimination - Index optimization strategies - JOIN vs subquery performance - Window functions for complex aggregations - Query execution plan analysis Triggers: "optimize SQL", "slow query", "improve performance", "SQL最適化", "クエリ改善", "パフォーマンス向上"

View on GitHub

Marketplace

ai-agent-marketplace

takemi-ohama/ai-agent-marketplace

Plugin

ndf

Repository

takemi-ohama/ai-agent-marketplace
1stars

plugins/ndf/skills/data-analyst-sql-optimization/SKILL.md

Last Verified

January 18, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/takemi-ohama/ai-agent-marketplace/blob/main/plugins/ndf/skills/data-analyst-sql-optimization/SKILL.md -a claude-code --skill data-analyst-sql-optimization

Installation paths:

Claude
.claude/skills/data-analyst-sql-optimization/
Powered by add-skill CLI

Instructions

# Data Analyst SQL Optimization Skill

## 概要

このSkillは、data-analystエージェントがSQLクエリのパフォーマンスを改善する際に使用します。実績のある最適化パターンとベストプラクティスを提供し、遅いクエリを高速化します。

## 主な機能

1. **最適化パターンライブラリ**: 頻出の最適化パターンをカタログ化
2. **Before/After例**: 実際の改善例を多数掲載
3. **インデックス推奨**: 適切なインデックス戦略の提案
4. **実行計画解析ガイド**: EXPLAINの読み方と改善点の特定

## 使用方法

### 基本的な使い方

1. **遅いクエリを特定**: クエリ実行時間をログで確認
2. **該当する最適化パターンを探す**: reference.mdから適用可能なパターンを選択
3. **クエリを書き換え**: パターンに従ってクエリを最適化
4. **実行計画で検証**: EXPLAINで改善を確認
5. **パフォーマンス測定**: 実行時間の短縮を確認

### トリガーキーワード

以下のキーワードを含むユーザーリクエストで自動起動されます:
- "optimize SQL" / "SQL最適化"
- "slow query" / "遅いクエリ"
- "improve performance" / "パフォーマンス向上"
- "query tuning" / "クエリチューニング"

## 最適化パターン一覧

### 1. N+1クエリ削減
**問題**: ループ内で繰り返しSELECT文を実行
**解決**: JOINまたはサブクエリで1回のクエリに統合

### 2. インデックス活用
**問題**: WHERE句の列にインデックスがない
**解決**: 適切なインデックスを作成

### 3. JOIN最適化
**問題**: 不要な大規模テーブルのJOIN
**解決**: 必要な列のみ取得、結合順序の最適化

### 4. ウィンドウ関数活用
**問題**: 複雑なサブクエリの入れ子
**解決**: ROW_NUMBER(), RANK()等のウィンドウ関数を使用

### 5. DISTINCT削減
**問題**: 不要なDISTINCT使用
**解決**: GROUP BYまたは適切なJOINで代替

### 6. EXISTS vs IN
**問題**: サブクエリでINを使用
**解決**: EXISTSに変更(多くの場合高速)

### 7. LIMIT活用
**問題**: 全件取得後にアプリ側でフィルタ
**解決**: SQLでLIMIT/OFFSETを使用

### 8. 計算列のインデックス
**問題**: WHERE句で関数を列に適用
**解決**: 計算済み列を作成してインデックス

## リファレンス

詳細な最適化パターンとコード例は、以下のファイルを参照してください:
- `reference.md`: 各パターンの詳細説明
- `examples.md`: Before/Afterの実例

## 実装例

### 例1: N+1クエリの削減

**Before**:
```sql
-- ループで実行(N+1クエリ)
SELECT * FROM users WHERE id = ?;  -- N回実行
```

**After**:
```sql
-- 1回のクエリで取得
SELECT u.*, o.order_count
FROM users u
LEFT JOIN (
  SELECT user_id, COUNT(*) as order_count
  FROM orders
  GROUP BY user_id
) o ON u.id = o.user_id;
```

**改善**: N+1回 → 1回のクエリ、大幅な高速化

### 例2: インデックス活用

**Before**:
```sql
SELECT * FROM orders
WHERE created_at > '2023-01-01'
AND status = 'completed';
-- インデックスなし、フルスキャン
```

**After**:
```sql
-- インデックス作成
CREATE INDEX idx_orders_status_created ON orders(status, created_at);

-- 同じクエリがインデックスを使用
SELECT * FROM orders
WHERE status = 'completed'
AND created_at > '20

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3826 chars