PostgreSQL e indexes em Foreign Keys, Primary Keys e em uniques

image_pdfimage_print

Iremos descrever simplificadamente o atual comportamento do PostgreSQL no que tange a indexes em chaves estrangeiras, chaves primárias e em uniques

Primary Key: PostgreSQL cria automaticamente índice ao se definir uma coluna como chave primária. Nâo é necessário criar um índice explicíto para colunas que são chaves primária.

Todas as vezes que o PostgreSQL efetuar a criação implícita de índice, será registrado no log um notice.

Unique: PostgreSQL cria automaticamente índice ao se definir uma coluna como unique

Foreign Key: Em chaves estrangeiras, o PostgreSQL não efetua a criação de índices automaticamente.

Em geral é uma boa ideia criar índices em chaves estrangeiras. Mas isto deve ser uma otimização que deve ser feita pelo operador a seu critério

Importante lembrar que adicionar índices acelera o custo de SELECTs. No entanto há perda de performance em todas as operações de INSERT, UPDATE e DELETE, visto que adicionam passos extras a simples operação. É um custo pequeno, mas ele é adicionado. Da mesma forma que o ganho do SELECT é grande quanto maior a tabela.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!