1
resposta

Índice em chave estrangeira

No trabalho passei por uma situação onde eu tinha por exemplo, uma tabela marcas, e outra carros, sendo que carros tem uma chave estrangeira para marcas

Estávamos tendo muita lentidão com uma query que filtrava a tabela carros pelo id da marca, e isso deixava lento. Após a criação de índice, o problema foi resolvido. Então não entendi durante a aula, a menção de que o PostgresSQL ja cria um índice para uma chave estrangeira.

1 resposta

Bom dia, João! Tudo bem com você?

Na verdade, o PostgreSQL não cria automaticamente índices para chaves estrangeiras. A documentação diz que:

PostgreSQL cria automaticamente um índice exclusivo quando uma restrição exclusiva ou chave primária é definida para uma tabela .

Isso significa que, se você tem uma coluna que é uma chave estrangeira e deseja otimizar consultas que a utilizam, você precisará criar o índice manualmente, como você fez no seu trabalho. Ou seja, se você precisar criar índices, use o comando abaixo:

CREATE INDEX nome_unico_do_indice ON tabela (coluna);

Se você quiser visualizar todos os índices criados, use o comando abaixo:

SELECT *
FROM pg_catalog.pg_indexes
WHERE schemaname='public'
AND tablename='nome_da_tabela';

Resultado:

A imagem mostra uma consulta SQL em execução em um banco de dados PostgreSQL. O código da consulta busca informações sobre índices em uma tabela conforme código que foi mostrado acima

Caso queira se aprofundar no assunto, deixo algumas recomendações, que estão em inglês, mas, usando o recurso de tradução de páginas do próprio navegador, é possível compreender:

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado