Indexação de banco de dados: índices parciais
Este curso estuda índices parciais a partir de uma tabela real de submissões. Começa com um índice simples na coluna booleana success, que nenhuma query usa do jeito para o qual foi feito. Depois cria índices parciais cujas colunas e predicado do where: batem com queries reais. As aulas leem planos do EXPLAIN e testam quais condições o planejador consegue provar contra um predicado guardado. Medem tamanhos com pg_relation_size, incluindo o efeito da deduplicação da B-tree. Também comparam dois índices parciais espelho com um índice composto completo e analisam uma coluna booleana que nenhum código consulta.
O que você vai aprender
- ✓Ler os índices de um schema contra as queries que rodam na tabela
- ✓Escrever um índice parcial cujas colunas e predicado batem com uma query real
- ✓Quais condições o Postgres consegue provar que implicam o predicado de um índice
- ✓Medir o tamanho de um índice parcial de forma justa e o efeito da deduplicação da B-tree
- ✓Comparar dois índices parciais com um índice composto completo
- ✓Conferir se uma query existe antes de criar um índice para ela
Um índice que quase não está fazendo nada
O curso de nível Júnior "Migrations ActiveRecord: índices" ensinou a sintaxe do where:, com exemplos de que esta aplicação não precisava. Este curso faz a pergunta mais difícil, de nível Pleno. Não "como escrever um índice parcial", e sim "como saber se o índice que você já tem está na forma errada…
Ler a aula completa grátis →Currículo
7 aulasUm índice que quase não está fazendo nada
Um índice simples numa coluna booleana perde no plano para um índice composto mais seletivo.
WHERE success = false: combinando com a query real
Um índice parcial com a forma da query de tentativas falhas tira do plano o filtro sobre success.
A prova do planejador, não uma promessa
Cinco condições mostram que o Postgres só usa um índice parcial quando consegue provar o predicado.
Medindo a diferença real, com honestidade
Uma comparação justa de tamanho mantém as colunas, e a deduplicação da B-tree explica a economia menor.
Dois índices parciais, um par de colunas
Dois índices parciais com predicados opostos são comparados ao índice de três colunas que a aplicação escolheu.
Quando o índice resolve um problema que o código não tem
A coluna quiz_options.correct parece candidata a índice, mas nenhum código roda essa query.
Juntando tudo: o índice que cada query precisa
Uma revisão de cada índice do curso, quem o consulta e o que decidiu o resultado.