データベースのパフォーマンスが低いと、アプリケーションが極端に遅くなることがあります。このスキルでは、インデックス、クエリ最適化、接続管理、セキュリティ、スキーマ設計に関する27の最適化されたPostgreSQLパターンを提供し、10〜100倍のパフォーマンス向上を実現します。
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「supabase-postgres-best-practices」。 SELECT * FROM orders WHERE customer_id = 123 AND status = 'pending' ORDER BY created_at DESC LIMIT 20;
預期結果:
- 問題: customer_idとstatus列にインデックスがないため、フルテーブルスキャンが発生しています。
- 修正: CREATE INDEX CONCURRENTLY orders_customer_status_idx ON orders (customer_id, status, created_at DESC);
- 影響: 大きなテーブルでWHERE句が選択的な場合、クエリが100〜1000倍高速になります。
正在使用「supabase-postgres-best-practices」。 CREATE TABLE users (id SERIAL PRIMARY KEY, email TEXT, settings JSONB);
預期結果:
- 問題: emailにTEXTを使用すると長さ制約がなくなり、ストレージオーバーヘッドが発生します。
- 修正: emailにはVARCHAR(255)を使用するか、RFC準拠の場合はVARCHAR(254)を使用してください。
- 問題: JSONB列にクエリパターンのGINインデックスがありません。
- 修正: 特定のJSONフィールドをクエリする場合は、次のようにインデックスを追加してください: CREATE INDEX idx_users_settings ON users USING gin (settings);
正在使用「supabase-postgres-best-practices」。 BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT;
預期結果:
- 問題: 長時間実行されるトランザクションがロックを保持し、同時アクセスをブロックしています。
- 修正: トランザクションは短く保ってください。キュー型パターンにはSKIP LOCKEDの使用を検討してください。
- 検討: 行レベルのロックが必要な場合は、NOWAIT付きのSELECT FOR UPDATEを使用してください。
- ベストプラクティス: アプリケーションレベルの調整には勧告ロックを使用してください。
安全審計
安全This is a documentation-only skill containing PostgreSQL best practices. All static scanner findings are false positives. The skill contains only markdown documentation with SQL code examples for educational purposes. No executable code, no network calls, no file system access, and no external command execution. All flagged patterns are SQL syntax in documentation examples, not actual security vulnerabilities.
品質評分
你能建構什麼
低速クエリを最適化するデータベース開発者
開発者は、大規模テーブルでアプリケーションクエリがタイムアウトしていることに気づきます。このスキルを使用して不足しているインデックスを特定し、JOINパターンを最適化し、カバリングインデックスを適用することで、10〜100倍のクエリ速度向上を実現します。
本番データベースを構成するDevOpsエンジニア
新しいPostgreSQLインスタンスを設定するエンジニアは、このスキルを使用して接続プーリングを構成し、適切なタイムアウトを設定し、最初の日からセキュリティのベストプラクティスを実装します。
データベースコードを生成するAIエージェント
新機能のSQLを生成するAIコーディングエージェントは、このスキルを参照して最適化されたクエリ、適切なスキーマ設計、セキュリティを考慮したRLSポリシーを手動レビューなしで作成します。
試試這些提示
このPostgreSQLクエリのパフォーマンス問題をレビューし、postgres-best-practicesに基づいて最適化を提案してください:
```sql
{user_query}
```以下の要件を持つ{entity}のPostgreSQLスキーマを設計してください:
- {requirement_1}
- {requirement_2}
データ型、インデックス、制約についてはpostgres-best-practicesに従ってください。{concurrent_users}人の同時ユーザーがいる{use_case}シナリオ向けにPostgreSQL接続設定を構成してください。プーリング戦略、準備済みステートメント、タイムアウト値をpostgres-best-practicesに基づいて考慮してください。このPostgreSQLスキーマとクエリのセキュリティ問題を監査してください:
- RLSポリシーを確認する
- 特権割り当てを検証する
- SQLインジェクションのリスクを探す
セキュリティパターンにはpostgres-best-practicesを適用してください:
```{user_code}
```最佳實務
- 常に外部キーとWHERE、JOIN、ORDER BY句で使用される列にインデックスを作成し、大規模なテーブルでのシーケンシャルスキャンを防止してください。
- 接続プーリング(PgBouncerまたはビルトインプーリング)を使用し、準備済みステートメントの制限を構成して接続の枯渇を回避してください。
- マルチテナントアプリケーションでは、データベースレベルでRow-Level Security(RLS)を実装し、アプリケーションロジックだけに頼らないでください。
- トランザクションは短く保ち、同時アクセスパターンにはSKIP LOCKEDまたは勧告ロックを使用してデッドロックを防止してください。
避免
- 本番クエリでSELECT *を使用する - 必要な列を指定してカバリングインデックスを有効にし、I/Oを削減してください。
- 大規模なテーブルでロックを保持しながらインデックスを作成する - ダウンタイムを回避するにはCONCURRENTLYオプションを使用してください。
- 非構造化データをTEXT列に格納する - 查询可能性のため、適切なデータ型(JSONB、ARRAY、ENUM)を使用してください。
- ロックを保持する長時間実行されるトランザクションを実行する - 小規模な単位に分割し、ロックを適時に解放してください。