mcpField
M
mysql

mysql

github.com/claude-dev-suiteデータ・データベース4675 回インストール5 日前に更新
リポジトリ

mysql について

MySQL に特化したリファレンススキルで、テーブル設計、クエリ、トラブルシューティング、運用上の注意を扱います。PostgreSQL との違いや、別のデータベーススキルを使うケースも示します。

主な機能

  1. 01テーブル定義の例
  2. 02一般的なクエリパターン
  3. 03MySQL と PostgreSQL の違い
  4. 04クエリのアンチパターン指針
  5. 05トラブルシューティング資料

活用シーン

  1. 01MySQL のテーブルとインデックスの設計
  2. 02ページングや結合クエリの作成
  3. 03遅いクエリやデッドロックの調査
  4. 04用途に合うデータベーススキルの選択

MCP 対応

README では、包括的なドキュメントを取得するため `mcp__documentation__fetch_docs` に technology として `mysql` を指定するよう案内しています。

インストール

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

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill mysql

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

同梱ファイルquick-ref/indexes.mdquick-ref/queries.md

詳細

MySQL の基礎知識

詳しい知識:包括的なドキュメントを参照するには、technology: mysql を指定して mcp__documentation__fetch_docs を使用してください。

テーブル定義

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    is_active BOOLEAN DEFAULT TRUE,
    INDEX idx_email (email),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

よく使うクエリ

-- Pagination
SELECT * FROM users
WHERE is_active = TRUE
ORDER BY created_at DESC
LIMIT 20 OFFSET 0;

-- Join
SELECT u.*, COUNT(p.id) as post_count
FROM users u
LEFT JOIN posts p ON p.user_id = u.id
GROUP BY u.id;

-- Upsert
INSERT INTO users (email, name)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = VALUES(name);

PostgreSQL との主な違い

機能MySQLPostgreSQL
自動 IDAUTO_INCREMENTSERIAL
BooleanTINYINT(1)BOOLEAN
アップサートON DUPLICATE KEYON CONFLICT
JSONJSONJSONB(インデックス付き)

このスキルを使用しない場合

  • PostgreSQL 固有の機能 - JSONB、配列、ウィンドウ関数には postgresql スキルを使用してください
  • NoSQL 操作 - ドキュメントストア/キー・バリューストアには mongodb または redis スキルを使用してください
  • Oracle データベース - Oracle 固有の機能には oracle スキルを使用してください
  • SQL Server - T-SQL および SQL Server の機能には sqlserver スキルを使用してください
  • ORM の抽象化 - フレームワーク固有のスキル(Prisma、TypeORM、Sequelize)を使用してください

アンチパターン

アンチパターン問題解決策
本番環境での SELECT *不要なデータを転送し、パフォーマンスに影響します必要なカラムを明示的に指定してください
UPDATE/DELETE での WHERE の欠落意図せずすべての行を変更します必ず WHERE 句を含めてください
JOIN/WHERE 対象カラムのインデックス不足全表スキャンが発生し、クエリが遅くなります頻繁にクエリされるカラムにインデックスを追加してください
トランザクションデータでの MyISAMトランザクションをサポートせず、テーブルレベルでロックしますInnoDB エンジンを使用してください
LIKE '%pattern'インデックスを使用できず、全件スキャンになりますLIKE 'pattern%' または全文検索を使用してください
大きなテーブルでの LIMIT の欠落アプリケーションがクラッシュする可能性があります必ず結果をページ分割してください
頻繁に変更される値への ENUM の使用値の追加に ALTER TABLE が必要です代わりにルックアップテーブルを使用してください
外部キーの欠落データ整合性の問題が発生します適切な FK 制約を定義してください
N+1 クエリ問題ループ内で行ごとにクエリが実行されますJOIN またはバッチクエリを使用してください
プリペアドステートメントを使用しないSQL インジェクションのリスクがあり、パフォーマンスも低下しますパラメーター化されたクエリを使用してください

迅速なトラブルシューティング

問題診断解決策
クエリが遅いEXPLAIN SELECT ...インデックスを追加し、クエリを書き換え、実行計画を分析してください
CPU 使用率が高いSHOW PROCESSLIST で遅いクエリを特定します上位のクエリを最適化し、インデックスを追加してください
接続数の上限に達したSHOW STATUS LIKE 'Threads_connected'max_connections を増やし、コネクションプーリングを使用してください
ロック待ちタイムアウトSHOW ENGINE INNODB STATUS を確認しますトランザクション時間を短縮し、クエリを最適化してください
ディスク容量がいっぱいSELECT table_schema, SUM(data_length+index_length) FROM information_schema.tables GROUP BY 1古いデータをアーカイブし、テーブルを最適化してください
レプリケーション遅延SHOW SLAVE STATUSリソースを増やし、binlog の設定を調整してください
テーブル破損CHECK TABLE table_nameREPAIR TABLE を実行するか、バックアップから復元してください
デッドロックエラーログと SHOW ENGINE INNODB STATUS を確認しますトランザクションの範囲を縮小し、同じ順序でテーブルにアクセスしてください

参考ドキュメント

コメント