Postgres FK 约束和索引是独立的。
最近,我正在寻找未使用的索引,并发现了通过以下方式消除约束执行所需的索引的技巧:
WHERE NOT EXISTS (SELECT 1
FROM pg_constraint c
WHERE c.conindid = pg_stat_user_indexes.indexrelid)
我们独立于索引创建了 FK 约束。
是否有可能以某种方式pg_constraint.conindid
将索引与 FK 约束相关联,以便从 FK 指向索引?
就像是:
ALTER TABLE my ALTER CONSTRAINT my_your_fk USING INDEX my_your_fk_i;
更新我在 Postgres 文档中看到了一些相关的内容:
ALTER TABLE distributors DROP CONSTRAINT distributors_pkey,
ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX dist_id_temp_idx;
我不是 100% 确定你在问什么。
您的查询显示了外键约束与目标索引的关联。
源索引和外键约束之间没有关联。
您可以使用此查询查找源中没有索引的所有外键,这些外键支持对目标表进行快速更新和键修改:
奇怪的条件将测试第一个索引列是否与外键定义中的列相同。