スキル postgres-best-practices
📦

postgres-best-practices

安全

PostgreSQLクエリとスキーマの最適化

遅いデータベースクエリやパフォーマンスの低下に悩んでいませんか?このスキルは、Supabaseでの実証済みのPostgreSQL最適化ルール、具体的なSQL例、および測定可能なパフォーマンス改善を提供します。

対応: Claude Codex Code(CC)
🥉 74 ブロンズ
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「postgres-best-practices」を使用しています。 このクエリは100k行で5秒かかります: SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending'

期待される結果:

複合インデックスを作成: CREATE INDEX idx_orders_customer_status ON orders (customer_id, status)。これにより実行プランがシーケンシャルスキャンからインデックススキャンに変更され、クエリ時間が10ms未満になります。列の順序重要です:最適なインデックス使用のために、等価フィルター(customer_id)をstatusフィルターの前に配置してください。

「postgres-best-practices」を使用しています。 ユーザープロファイルデータを含むユーザーを取得する際にN+1クエリを防ぐにはどうすればいいですか?

期待される結果:

個別のクエリをJOINに置き換えてください: SELECT u.*, p.bio, p.avatar_url FROM users u LEFT JOIN user_profiles p ON p.user_id = u.id。高速ルックアップのためにuser_profiles(user_id)にインデックスを追加してください。これにより101クエリ(ユーザープロファイル用の100を含む)が単一のクエリに削減されます。

セキュリティ監査

安全
v1 • 2/24/2026

This skill contains educational documentation for PostgreSQL best practices from Supabase. All 711 static analysis findings are false positives: the 'external_commands' detections are SQL code blocks in markdown documentation (not shell commands), 'network' URLs are reference links to postgresql.org and supabase.com, 'scripts' findings are SQL WITH clauses (CTEs), and 'crypto' warnings are text pattern matches in documentation. No executable code or security risks present.

37
スキャンされたファイル
3,490
解析された行数
0
検出結果
1
総監査数
セキュリティ問題は見つかりませんでした
監査者: claude

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
50
コミュニティ
100
セキュリティ
91
仕様準拠

作れるもの

低速クエリを最適化するバックエンド開発者

欠落しているインデックスを特定し、N+1パターンを修正し、クエリ最適化技術を適用して、応答時間を秒からミリ秒に短縮します。

新しいスキーマを設計するデータベースアーキテクト

初期スキーマ設計時にデータ型、制約、外部キー、インデックス戦略のベストプラクティスを適用します。

本番データベースをチューンするDevOpsエンジニア

接続制限、バキューム設定、モニタリングを構成して、負荷下でのデータベース健全性を維持します。

これらのプロンプトを試す

基本的なクエリ最適化
Review this PostgreSQL query for performance issues and suggest improvements: [paste query]
インデックス推奨
Analyze this table schema and query workload. What indexes should I create for optimal performance? Schema: [paste schema], Queries: [paste queries]
N+1クエリ修正
I'm fetching users and their orders with separate queries. Show me how to rewrite this as a single efficient JOIN with proper indexing.
Row-Level Securityポリシー
Create a Row-Level Security policy for a multi-tenant SaaS where users can only access data belonging to their organization. Table structure: [paste schema]

ベストプラクティス

  • WHERE、JOIN、ORDER BY列には常にインデックスを追加する
  • デプロイ前にEXPLAIN ANALYZEでクエリ実行プランを確認する
  • データベースの枯渇を防ぐために接続プールを実装する

回避

  • シーケンシャルスキャンを引き起こす大きなテーブルでの非インデックスクエリの実行
  • 特定のフィールドの代わりにSELECT *ですべての列を取得する
  • インデックス使用を妨げる先頭ワイルドカードを持つLIKEの使用

よくある質問

哪些列にインデックスが必要ですか?
WHERE句、JOIN条件、ORDER BY、外部キーに使用する列にインデックスを作成します。pg_stat_user_tablesを使用して、インデックスなしの頻繁にアクセスされる列を特定します。
N+1とは何ですか?またどのように修正しますか?
N+1は、親レコードを取得してから子レコードに対してN個の追加クエリを実行する際に発生します。JOINを使用するか、IN句でバッチロードすることで、すべての子を1つのクエリで取得して修正します。
Row-Level Securityはどのように機能しますか?
RLSはデータベースレベルでアクセスポリシーを強制します。ALTER TABLE ... ENABLE ROW LEVEL SECURITYで有効にし、organization_idなどのユーザー属性に基づいて行をフィルターするポリシーを作成します。
インデックスを追加した後、なぜクエリが遅くなるのですか?
考えられる原因:複合インデックスでの列順序の誤り、インデックス付き列での関数の使用、古い統計(ANALYZEを実行)、または低カーディナリティ列でのインデックス。EXPLAIN ANALYZEで診断してください。