Temos um banco de dados bastante grande (cerca de 700 GB de dados), que foi herdado para nós e teve vários DBAs. Com o tempo percebemos que faltam várias chaves estrangeiras e índices.
Gostaria de saber se existe alguma maneira automatizada de descobrir essas possíveis chaves/índices ausentes usando algum tipo de análise de log ou algo semelhante.
Lembrei-me de ter visto uma consulta há algum tempo em uma postagem, então uma pesquisa rápida resultou em:
De http://mlawire.blogspot.nl/2009/08/postgresql-indexes-on-foreign-keys.html
Isso lhe dará o que você quer.
E também encontrei https://github.com/pgexperts/pgx_scripts/blob/master/indexes/fk_no_index.sql , mas não usei isso sozinho.
Isso é difícil de fazer genericamente sem conhecer as convenções de nomenclatura.
Supondo que todas as tabelas comecem com t_ e assumindo que as colunas de chave estrangeira terminem com _id , essa consulta (pelo menos) listará a maioria das chaves estrangeiras, tanto as ausentes quanto as presentes. Ele também irá sugerir o nome da tabela de destino.