A restrição e o índice do Postgres FK são independentes.
Recentemente, fui procurado por índices não utilizados e encontrei um truque para eliminar os índices necessários para a imposição de restrições:
WHERE NOT EXISTS (SELECT 1
FROM pg_constraint c
WHERE c.conindid = pg_stat_user_indexes.indexrelid)
Criamos restrições FK independentemente dos índices.
É possível associar de alguma forma o índice à restrição FK para pg_constraint.conindid
apontar de FK para o índice?
Algo como:
ALTER TABLE my ALTER CONSTRAINT my_your_fk USING INDEX my_your_fk_i;
ATUALIZAÇÃO Vejo algo relacionado nos documentos do Postgres:
ALTER TABLE distributors DROP CONSTRAINT distributors_pkey,
ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX dist_id_temp_idx;
Não tenho 100% de certeza do que você está perguntando.
Sua consulta mostra a associação de restrições de chave estrangeira a índices no destino.
Não há associação entre índices na fonte e restrições de chave estrangeira.
Você pode usar esta consulta para encontrar todas as chaves estrangeiras que não possuem índice na origem que oferece suporte a atualizações rápidas e modificações de chave na tabela de destino:
A condição estranha testará se as primeiras colunas de índice são idênticas às colunas na definição de chave estrangeira.