mcpField
S
sql-database-assistant

sql-database-assistant

github.com/borgheiデータ・データベース1.0k98 回インストール1 週間前に更新
リポジトリ

sql-database-assistant について

データベース開発チーム向けの SQL スキルです。クエリ性能の分析、DDL からのスキーマ文書作成、スキーマ差分に基づく移行 SQL の生成を行います。タスク、入力内容、データベース方言を確認してから処理します。

主な機能

  1. 01一般的な SQL 性能問題の検出
  2. 02DDL からのスキーマ文書生成
  3. 03スキーマ比較と移行 SQL 生成
  4. 04JSON と Markdown の出力

活用シーン

  1. 01遅いクエリの原因候補の調査
  2. 02プロジェクト用スキーマ文書の作成
  3. 03目標スキーマ向け移行 SQL の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/borghei/claude-skills --skill sql-database-assistant

インストール後、Claude Code で/sql-database-assistantを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
queries.sql
schema.sql
references/
sql-optimization.md
scripts/
migration_generator.py
query_optimizer.py
schema_explorer.py

詳細

SQL データベースアシスタント

カテゴリ: エンジニアリング 分野: データベース開発と最適化

概要

SQL データベースアシスタントスキルは、SQL クエリのパフォーマンス分析、DDL ファイルからのデータベーススキーマの調査、スキーマの差分からのマイグレーション SQL の生成に役立つツールを提供します。チームが効率的なクエリを作成し、整理されたスキーマを維持し、安全にデータベースを進化させるのを支援します。

先に確認すること

分析や生成を始める前に、以下の入力を確認してください。不明な項目や曖昧な項目があれば、推測せずに質問してください。

  • タスク — クエリ最適化/スキーマドキュメント作成/マイグレーション生成(スクリプトを選択します)
  • SQL 入力 — 対象のクエリ、DDL ファイル、または変更前と変更後のスキーマの組み合わせ(スクリプトが実際に処理する入力です)
  • 対象データベース/方言 — Postgres/MySQL など(インデックスの推奨内容やマイグレーション SQL の構文が変わります)

停止ルール:出力に最も影響する2〜3項目だけを質問してください。ユーザーが「とりあえず下書きを作って」と言った場合は、作業を進め、成果物の冒頭に前提を列挙してください。

クイックスタート

# Analyze a SQL query for performance issues
python scripts/query_optimizer.py --file slow_query.sql

# Analyze inline SQL
python scripts/query_optimizer.py --query "SELECT * FROM users WHERE name LIKE '%john%'"

# Explore schema from DDL file
python scripts/schema_explorer.py --file schema.sql

# Generate migration from schema diff
python scripts/migration_generator.py --from old_schema.sql --to new_schema.sql

# JSON output
python scripts/query_optimizer.py --file query.sql --format json

ツールの概要

query_optimizer.py

SQL クエリを分析し、パフォーマンス上の問題や最適化の機会を特定します。

機能説明
SELECT * の検出すべての列を選択するクエリを検出します
インデックス不足のヒントインデックスが必要と思われる WHERE/JOIN の列を特定します
N+1 の検出相関サブクエリのパターンを検出します
全テーブルスキャン大きなテーブルに対する WHERE 句のないクエリを検出します
JOIN 分析結合条件と結合の種類を確認します
LIKE の最適化先頭にワイルドカードがある LIKE パターンを検出します
schema_explorer.py

SQL DDL(CREATE TABLE)ファイルからドキュメントを生成します。

機能説明
テーブルカタログすべてのテーブルと列数を一覧表示します
列の詳細型、NULL 許容性、デフォルト値を記載します
インデックス一覧インデックスとその列を一覧表示します
リレーションシップのマッピング外部キーの関係を特定します
Markdown 出力スキーマドキュメントを生成します
migration_generator.py

2つのスキーマ DDL ファイルを比較して、マイグレーション SQL を生成します。

機能説明
列の追加新しい列に対して ALTER TABLE ADD COLUMN を実行します
列の削除削除された列に対して ALTER TABLE DROP COLUMN を実行します
型の変更型の変更に対して ALTER TABLE ALTER COLUMN を実行します
新しいテーブル新規テーブルに対して CREATE TABLE を実行します
テーブルの削除削除されたテーブルに対して DROP TABLE を実行します
インデックスの変更インデックスの差分に対して CREATE/DROP INDEX を実行します

ワークフロー

クエリ最適化のワークフロー
  1. 低速クエリを特定 - スロークエリログからクエリを収集します
  2. 分析 - 各クエリに対して query_optimizer.py を実行します
  3. 調査結果を確認 - 推定される影響に基づいて優先順位を付けます
  4. 最適化 - 提案された改善を適用します
  5. 検証 - 再分析して最適化を確認します
スキーマドキュメント作成のワークフロー
  1. DDL をエクスポート - データベースからスキーマをダンプします
  2. 調査 - schema_explorer.py を実行してドキュメントを生成します
  3. 確認 - リレーションシップとデータ型を確認します
  4. 公開 - プロジェクトのドキュメントに含めます
マイグレーションのワークフロー
  1. 現在のスキーマを取得 - 現在のスキーマ DDL をエクスポートします
  2. 目標を定義 - 目標とするスキーマ DDL を記述します
  3. マイグレーションを生成 - migration_generator.py を実行します
  4. SQL を確認 - 生成されたマイグレーションの安全性を確認します
  5. テスト - まずステージングデータベースに適用します
  6. デプロイ - ロールバック計画を用意して本番環境に適用します
CI 統合
# Lint SQL queries
python scripts/query_optimizer.py --file queries/ --format json --strict

# Generate schema docs
python scripts/schema_explorer.py --file schema.sql --format markdown > SCHEMA.md

リファレンスドキュメント

  • SQL の最適化 - インデックス戦略、クエリパターン、アンチパターン

よく使うパターンのクイックリファレンス

クエリのアンチパターン
パターン問題点修正方法
SELECT *不要なデータを取得します必要な列を指定します
LIKE '%term%'インデックスを使用できません全文検索を使用します
相関サブクエリN+1 クエリパターンになりますJOIN を使って書き換えます
WHERE 句がないテーブル全体をスキャンします絞り込み条件を追加します
WHERE 句の ORインデックスの利用効率が低下しますUNION または IN を使用します
インデックス付き列への関数適用インデックスを使用できなくなります値側に適用します
インデックスのガイドライン
クエリパターンインデックスの種類
WHERE col = valuecol に対する B-tree
WHERE col1 = v AND col2 = v複合インデックス(col1, col2)
ORDER BY colcol に対する B-tree
WHERE col LIKE 'prefix%'col に対する B-tree
WHERE col IN (...)col に対する B-tree
全文検索全文インデックス
マイグレーションの安全性
  • フォワードマイグレーションとあわせて、必ずロールバック用の SQL を生成します
  • 本番データのコピーに対してマイグレーションをテストします
  • まず列を NULL 許容で追加し、次にデータをバックフィルしてから制約を追加します
  • 列の名前を直接変更してはいけません。新しい列を追加し、データを移行してから古い列を削除します

コメント