Tenho várias tabelas de série temporal com Pkey na timestamp
coluna.
Gostaria de testar a melhoria do desempenho se alterar o índice BRIN
para BTREE
.
No entanto, eu também gostaria de ter uma restrição UNIQUE na timestamp
coluna (que, até onde eu sei, é baseada BTREE
).
Quais são minhas opções?
- Devo adicionar um
BRIN
índice adicional aBTREE
? Neste caso qual índice será escolhido durante as buscas/junções? - Devo descartar a chave e adicionar apenas a
UNIQUE
restrição? Neste caso como vai funcionar?
Meu cenário de uso é que preciso executar FULL OUTER JOINs em uma timestamp
coluna para fazer consultas de várias tabelas juntas e essas consultas às vezes podem ser executadas por 30 minutos ou mais.
Um índice BRIN tem a mesma finalidade que um índice de árvore B (só que é muito menor e menos eficiente para pesquisas), portanto, nunca faz sentido ter ambos na mesma coluna. Só não crie o índice BRIN, é supérfluo.
O PostgreSQL ainda pode escolher o índice BRIN (se você realizar varreduras de intervalo que resultem em muitas linhas), mas não acho que você ganhará muito e provavelmente é melhor dispensar o custo de manutenção de um índice adicional.
A chave primária é uma restrição única (com uma
NOT NULL
restrição adicional), portanto a segunda questão é discutível.