Pular para o conteúdo
Skillpedia
APIs e servidores (backend)40 mil · #5275

postgresql-optimization

Ajuda seu agente a usar recursos avançados do PostgreSQL para melhorar o desempenho. Permite criar bancos de dados mais rápidos e eficientes.

O que ela faz

Este assistente ajuda você a usar recursos avançados do PostgreSQL, como tipos de dados especiais (JSONB, arrays), funções de janela e busca de texto. Ele também dá dicas para otimizar o desempenho do seu banco de dados.

Quando usar

  • ✓Quando você precisa armazenar e consultar dados em formato JSON.
  • ✓Ao criar relatórios com cálculos complexos sobre seus dados.
  • ✓Para acelerar buscas em grandes volumes de texto.

Exemplo do que pedir para a IA

“Como posso otimizar minhas consultas SQL no PostgreSQL?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/postgresql-optimization/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/postgresql-optimization/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele analisa seu código SQL e sugere melhorias, como a criação de índices adequados ou o uso de funções específicas do PostgreSQL. Ele também mostra exemplos de como usar recursos avançados.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill postgresql-optimization

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/postgresql-optimization/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Assistente de Desenvolvimento PostgreSQL

Orientação especializada em PostgreSQL para ${selection} (ou projeto inteiro, se nenhuma seleção). Foco em recursos específicos do PostgreSQL, padrões de otimização e capacidades avançadas.

Recursos Específicos do PostgreSQL

Operações JSONB

-- Advanced JSONB queries
CREATE TABLE events (
    id SERIAL PRIMARY KEY,
    data JSONB NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- GIN index for JSONB performance
CREATE INDEX idx_events_data_gin ON events USING gin(data);

-- JSONB containment and path queries
SELECT * FROM events 
WHERE data @> '{"type": "login"}'
  AND data #>> '{user,role}' = 'admin';

-- JSONB aggregation
SELECT jsonb_agg(data) FROM events WHERE data ? 'user_id';

Operações com Arrays

-- PostgreSQL arrays
CREATE TABLE posts (
    id SERIAL PRIMARY KEY,
    tags TEXT[],
    categories INTEGER[]
);

-- Array queries and operations
SELECT * FROM posts WHERE 'postgresql' = ANY(tags);
SELECT * FROM posts WHERE tags && ARRAY['database', 'sql'];
SELECT * FROM posts WHERE array_length(tags, 1) > 3;

-- Array aggregation
SELECT array_agg(DISTINCT category) FROM posts, unnest(categories) as category;

Funções de Janela e Análise

-- Advanced window functions
SELECT 
    product_id,
    sale_date,
    amount,
    -- Running totals
    SUM(amount) OVER (PARTITION BY product_id ORDER BY sale_date) as running_total,
    -- Moving averages
    AVG(amount) OVER (PARTITION BY product_id ORDER BY sale_date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_avg,
    -- Rankings
    DENSE_RANK() OVER (PARTITION BY EXTRACT(month FROM sale_date) ORDER BY amount DESC) as monthly_rank,
    -- Lag/Lead for comparisons
    LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sale_date) as prev_amount
FROM sales;

Busca de Texto Completo

-- PostgreSQL full-text search
CREATE TABLE documents (
    id SERIAL PRIMARY KEY,
    title TEXT,
    content TEXT,
    search_vector tsvector
);

-- Update search vector
UPDATE documents 
SET search_vector = to_tsvector('english', title || ' ' || content);

-- GIN index for search performance
CREATE INDEX idx_documents_search ON documents USING gin(search_vector);

-- Search queries
SELECT * FROM documents 
WHERE search_vector @@ plainto_tsquery('english', 'postgresql database');

-- Ranking results
SELECT *, ts_rank(search_vector, plainto_tsquery('postgresql')) as rank
FROM documents 
WHERE search_vector @@ plainto_tsquery('postgresql')
ORDER BY rank DESC;

Otimização de Desempenho do PostgreSQL

Otimização de Consultas

-- EXPLAIN ANALYZE for performance analysis
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) 
SELECT u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01'::date
GROUP BY u.id, u.name;

-- Identify slow queries from pg_stat_statements
SELECT query, calls, total_time, mean_time, rows,
       100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements 
ORDER BY total_time DESC 
LIMIT 10;

Estratégias de Indexação

-- Composite indexes for multi-column queries
CREATE INDEX idx_orders_user_date ON orders(user_id, order_date);

-- Partial indexes for filtered queries
CREATE INDEX idx_active_users ON users(created_at) WHERE status = 'active';

-- Expression indexes for computed values
CREATE INDEX idx_users_lower_email ON users(lower(email));

-- Covering indexes to avoid table lookups
CREATE INDEX idx_orders_covering ON orders(user_id, status) INCLUDE (total, created_at);

Gerenciamento de Conexões e Memória

-- Check connection usage
SELECT count(*) as connections, state 
FROM pg_stat_activity 
GROUP BY state;

-- Monitor memory usage
SELECT name, setting, unit 
FROM pg_settings 
WHERE name IN ('shared_buffers', 'work_mem', 'maintenance_work_mem');

Tipos de Dados Avançados do PostgreSQL

Tipos Personalizados e Domínios

-- Create custom types
CREATE TYPE address_type AS (
    street TEXT,
    city TEXT,
    postal_code TEXT,
    country TEXT
);

CREATE TYPE order_status AS ENUM ('pending', 'processing', 'shipped', 'delivered', 'cancelled');

-- Use domains for data validation
CREATE DOMAIN email_address AS TEXT 
CHECK (VALUE ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');

-- Table using custom types
CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    email email_address NOT NULL,
    address address_type,
    status order_status DEFAULT 'pending'
);

…

Perguntas frequentes

O que são 'funções de janela'?

São funções que realizam cálculos sobre um conjunto de linhas relacionadas à linha atual, permitindo análises como totais acumulados ou rankings sem agrupar todos os dados.

O que é JSONB?

É um tipo de dado no PostgreSQL que armazena dados JSON de forma binária, tornando as consultas e buscas dentro desses dados muito mais rápidas.

Como o 'full-text search' funciona?

Ele transforma seu texto em um formato especial (tsvector) que permite buscas muito eficientes, como encontrar documentos que contenham certas palavras ou frases, e até mesmo ranquear os resultados.

Detalhes

Descrição original do autor

PostgreSQL-specific development assistant focusing on unique PostgreSQL features, advanced data types, and PostgreSQL-exclusive capabilities. Covers JSONB operations, array types, custom types, range/geometric types, full-text search, window functions, and PostgreSQL extensions ecosystem.

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5275
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas