SQL: índices e performance
O curso explica como funcionam os índices do PostgreSQL e como eles mudam o plano de uma query. Começa pela estrutura de um índice B-tree: uma árvore ordenada e balanceada, com toda folha na mesma profundidade. Depois compara a saída de EXPLAIN ANALYZE numa tabela de 60.000 linhas antes e depois do add_index e mostra como migrations Rails e t.references criam índices. As aulas seguintes tratam de índices compostos e da ordem das colunas, e de índices únicos que recusam duplicatas. Também cobrem índices GIN para buscas de contenção em jsonb e o custo que todo índice traz às escritas.
O que você vai aprender
- ✓Como um índice B-tree guarda valores em ordem, numa árvore balanceada
- ✓Ler a saída do EXPLAIN ANALYZE para comparar Seq Scan e Index Scan
- ✓Criar índices em migrations Rails com add_index e t.references
- ✓Como a ordem das colunas muda o custo de um índice composto
- ✓Usar índices únicos para recusar duplicatas na camada do banco
- ✓Índices GIN para contenção em jsonb e o custo de cada índice nas escritas
O que um índice b-tree realmente é
"SQL: where e operadores" fechou com uma aula nomeando índices B-tree e mostrando a saída de EXPLAIN ANALYZE, o suficiente para distinguir Index Scan de Seq Scan. Este curso parte desse nome e constrói a estrutura por baixo dele. A próxima aula observa um índice mudando o plano de uma query real.
Ler a aula completa grátis →Currículo
7 aulasO que um índice b-tree realmente é
Descreve o B-tree como uma árvore ordenada e balanceada e explica por que buscas crescem mais devagar que as linhas.
Seq scan vs index scan, verificado ao vivo
Compara o EXPLAIN ANALYZE em 60.000 linhas antes e depois do add_index, com Seq Scan virando Index Scan.
add_index numa migration real do Rails
Mostra add_index nas migrations Rails do projeto, o índice automático do t.references e como o schema.rb registra índices.
Índices compostos & ordem das colunas
Mede como a ordem das colunas num índice composto muda o custo, favorecendo queries pela coluna inicial.
Índices únicos: aplicando correção na camada do banco
Mostra um índice único recusando uma inserção duplicada e por que a validação no modelo, sozinha, pode falhar com concorrência.
Índices GIN: tornando colunas JSONB buscáveis
Explica por que contenção com @> em jsonb precisa de GIN e por que o app removeu seus índices GIN originais.
Juntando tudo: escolhendo o índice certo
Revisa as quatro formas de índice e explica o custo que cada índice adiciona a INSERT, UPDATE e DELETE.