postgresql について
postgresqlは、PostgreSQLの開発者と管理者向けのスキルガイドです。SQL、データベース設計、性能分析、運用タスクを扱い、PostgreSQL固有の機能や実践方法も参照できます。
主な機能
- 01テーブルとインデックスの設計
- 02SQLクエリの作成と最適化
- 03JSONB、全文検索、pgvector
- 04EXPLAIN ANALYZEによる性能分析
- 05ユーザー権限、バックアップ、レプリケーション
活用シーン
- 01テーブル、制約、トリガー、関数の設計
- 02JOIN、CTE、集計クエリの最適化
- 03遅いクエリの分析とインデックス調整
- 04ロール、権限、バックアップの設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill postgresqlインストール後、Claude Code で/postgresqlを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使用する場面
次のようなことをユーザーが希望する場合は、このスキルを使用してください。
- テーブル、インデックス、制約、トリガー、PL/pgSQL 関数を設計する
- SQL クエリ(結合、CTE、ウィンドウ関数、集計)を作成または最適化する
- PostgreSQL 固有の機能(JSONB、全文検索、配列型、pgvector)を使用する
- psql でユーザー、ロール、権限を管理する
- バックアップ(pg_dump)、レプリケーション、パフォーマンスチューニング(EXPLAIN ANALYZE)を設定する
このスキルの使用方法
ワークフロー
- タスクを特定する - スキーマ設計、クエリ作成、最適化、または管理
- SQL を記述する - 以下のパターンと例を使用する
- パフォーマンスを分析する - 低速なクエリに対して EXPLAIN ANALYZE を実行する
- ベストプラクティスを適用する - 必要に応じてインデックス戦略、VACUUM、パーティショニングを行う
クイックスタートの例:インデックスとクエリを含むテーブル
-- Create a table with constraints
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
customer_id BIGINT NOT NULL REFERENCES customers(id),
status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending','shipped','delivered')),
total NUMERIC(10,2) NOT NULL,
metadata JSONB DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- Create an index for common queries
CREATE INDEX idx_orders_customer_status ON orders (customer_id, status);
-- Query with CTE and window function
WITH monthly_totals AS (
SELECT customer_id,
date_trunc('month', created_at) AS month,
SUM(total) AS month_total
FROM orders
WHERE status = 'delivered'
GROUP BY customer_id, date_trunc('month', created_at)
)
SELECT customer_id, month, month_total,
LAG(month_total) OVER (PARTITION BY customer_id ORDER BY month) AS prev_month
FROM monthly_totals;
パフォーマンス分析
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending';
ベストプラクティス
- 戦略的にインデックスを作成する - WHERE/JOIN 句で使用する列にインデックスを作成し、フィルター条件のあるクエリには部分インデックスを使用する
- 定期的に VACUUM を実行する - テーブルの肥大化を防ぎ、書き込みの多いテーブルでは autovacuum のしきい値を設定する
- 大きなテーブルをパーティショニングする - 1 億行を超えるテーブルでは、タイムスタンプ列を使った範囲パーティショニングを使用する
- ROLE/GRANT を使用する - 最小権限を付与し、アプリケーションの接続にスーパーユーザーを使用しない
- バックアップを作成して検証する -
pg_dumpまたは WAL アーカイブを使用し、復元手順を定期的にテストする
キーワード
postgresql, postgres, psql, SQL, JSONB, 全文検索, CTE, ウィンドウ関数, リレーショナルデータベース, インデックス, レプリケーション, EXPLAIN ANALYZE, pg_dump, パーティショニング
コメント
Markdown 対応