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'
カバリングインデックス:
CR…