postgres-patterns
PostgreSQLのクエリ最適化・スキーマ設計・インデックス戦略・セキュリティに関するパターン集です。よく使うパターンやインデックス種別、データ型、アンチパターンの検出をすばやく参照できます。Supabaseのベストプラクティスに基づいています。
description の原文を見る
> PostgreSQL database patterns for query optimization, schema design, indexing, and security. Quick reference for common patterns, index types, data types, and anti-pattern detection. Based on Supabase best practices.
SKILL.md 本文
PostgreSQL パターン
PostgreSQL のベストプラクティスのクイックリファレンス。詳細なガイダンスについては、database-reviewer エージェントをご利用ください。
有効化すべき場面
- SQL クエリまたはマイグレーションを作成する場合
- データベーススキーマを設計する場合
- 遅いクエリのトラブルシューティングを行う場合
- Row Level Security を実装する場合
- コネクションプーリングをセットアップする場合
クイックリファレンス
インデックスチートシート
| クエリパターン | インデックスタイプ | 例 |
|---|---|---|
WHERE col = value | B-tree (デフォルト) | CREATE INDEX idx ON t (col) |
WHERE col > value | B-tree | CREATE INDEX idx ON t (col) |
WHERE a = x AND b > y | 複合インデックス | CREATE INDEX idx ON t (a, b) |
WHERE jsonb @> '{}' | GIN | CREATE INDEX idx ON t USING gin (col) |
WHERE tsv @@ query | GIN | CREATE INDEX idx ON t USING gin (col) |
| 時系列範囲 | BRIN | CREATE INDEX idx ON t USING brin (col) |
データ型クイックリファレンス
| ユースケース | 正しい型 | 避けるべき型 |
|---|---|---|
| ID | bigint | int、ランダムUUID |
| 文字列 | text | varchar(255) |
| タイムスタンプ | timestamptz | timestamp |
| 金額 | numeric(10,2) | float |
| フラグ | boolean | varchar、int |
よくあるパターン
複合インデックスの順序:
-- 等式列を最初に、次に範囲列
CREATE INDEX idx ON orders (status, created_at);
-- 対象: WHERE status = 'pending' AND created_at > '2024-01-01'
カバリングインデックス:
CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
-- SELECT email, name, created_at でテーブルの参照を回避
部分インデックス:
CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
-- より小さいインデックス、アクティブなユーザーのみを含む
RLS ポリシー (最適化版):
CREATE POLICY policy ON orders
USING ((SELECT auth.uid()) = user_id); -- SELECT でラップ!
UPSERT:
INSERT INTO settings (user_id, key, value)
VALUES (123, 'theme', 'dark')
ON CONFLICT (user_id, key)
DO UPDATE SET value = EXCLUDED.value;
カーソルペジネーション:
SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
-- O(1) vs OFFSET は O(n)
キュー処理:
UPDATE jobs SET status = 'processing'
WHERE id = (
SELECT id FROM jobs WHERE status = 'pending'
ORDER BY created_at LIMIT 1
FOR UPDATE SKIP LOCKED
) RETURNING *;
アンチパターン検出
-- インデックスされていない外部キーを検出
SELECT conrelid::regclass, a.attname
FROM pg_constraint c
JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
WHERE c.contype = 'f'
AND NOT EXISTS (
SELECT 1 FROM pg_index i
WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
);
-- 遅いクエリを検出
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC;
-- テーブルブロートをチェック
SELECT relname, n_dead_tup, last_vacuum
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY n_dead_tup DESC;
コンフィグレーションテンプレート
-- コネクション制限 (RAM に合わせて調整)
ALTER SYSTEM SET max_connections = 100;
ALTER SYSTEM SET work_mem = '8MB';
-- タイムアウト
ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
ALTER SYSTEM SET statement_timeout = '30s';
-- モニタリング
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-- セキュリティのデフォルト設定
REVOKE ALL ON SCHEMA public FROM public;
SELECT pg_reload_conf();
関連リソース
- エージェント:
database-reviewer- 完全なデータベースレビューワークフロー - スキル:
backend-patterns- API とバックエンドパターン - スキル:
database-migrations- 安全なスキーマ変更
このスキルを使用すべき場面
- SQL クエリを作成する場合
- データベーススキーマを設計する場合
- クエリパフォーマンスを最適化する場合
- Row Level Security を実装する場合
- データベースの問題をトラブルシューティングする場合
- PostgreSQL コンフィグレーションをセットアップする場合
Supabase Agent Skills に基づく (提供: Supabase team) (MIT License)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- affaan-m
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/affaan-m/everything-claude-code / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。