AgentSkillsCN

postgresql

运用 JSONB、数组、全文搜索与性能优化技术,开发 PostgreSQL 数据库。在编写 PostgreSQL 查询、使用 JSONB 操作、实施全文搜索、通过索引优化查询性能,或配置行级安全策略时,可使用此技能。

SKILL.md
--- frontmatter
name: "postgresql"
description: 'Develop PostgreSQL databases with JSONB, arrays, full-text search, and performance optimization. Use when writing PostgreSQL queries, using JSONB operations, implementing full-text search, optimizing query performance with indexes, or configuring row-level security.'
metadata:
  author: "AgentX"
  version: "1.0.0"
  created: "2025-01-15"
  updated: "2025-01-15"
compatibility:
  languages: ["sql", "plpgsql"]
  platforms: ["windows", "linux", "macos"]

PostgreSQL Database Development

Purpose: Production-ready PostgreSQL development for high-performance, scalable applications.
Audience: Backend engineers and database administrators working with PostgreSQL.
Standard: Follows github/awesome-copilot PostgreSQL patterns.


When to Use This Skill

  • Writing PostgreSQL queries with JSONB or array operations
  • Implementing full-text search in PostgreSQL
  • Optimizing PostgreSQL query performance with indexes
  • Using window functions and CTEs
  • Configuring row-level security (RLS)

Prerequisites

  • PostgreSQL 14+ installed or accessible
  • psql or pgAdmin client

Quick Reference

NeedSolutionPattern
JSONB queryContainment operatorWHERE data @> '{"status": "active"}'::jsonb
Array operationsANY operatorWHERE id = ANY(ARRAY[1,2,3])
Full-text searchGIN index + tsvectorCREATE INDEX ON posts USING gin(to_tsvector('english', content))
Window functionsROW_NUMBER, RANKROW_NUMBER() OVER (PARTITION BY category ORDER BY created_at DESC)
UpsertINSERT ... ON CONFLICTON CONFLICT (id) DO UPDATE SET ...
JSON aggregationjsonb_aggSELECT jsonb_agg(row_to_json(t)) FROM ...

PostgreSQL Version

Current: PostgreSQL 16+
Minimum: PostgreSQL 14+


Common Pitfalls

IssueProblemSolution
N+1 queriesLoading relations one by oneUse JOINs or array_agg
Missing indexesSlow queriesAdd indexes on WHERE, JOIN, ORDER BY columns
OFFSET paginationSlow for large offsetsUse cursor-based pagination
**SELECT ***Unnecessary data transferSelect only needed columns
Unparameterized queriesSQL injection riskAlways use parameterized queries
No connection poolingToo many connectionsUse pgBouncer or application pooling

Resources


See Also: Skills.mdAGENTS.mdDatabase Skill

Last Updated: January 27, 2026

Troubleshooting

IssueSolution
Slow JSONB queriesCreate GIN index on JSONB column
Full-text search not matchingCheck tsvector configuration matches query language, rebuild indexes
Deadlock detectedAccess tables in consistent order across transactions, keep transactions short

References