如何在外表上创建唯一索引?

时间:2016-11-28 08:02:00

标签: postgresql postgres-fdw

数据库1在数据库2上有外来表a和b。

我们如何在这些外来表a和b上创建索引。这些外表分别是database2.c和database2.d表的包装器,它们具有必要的索引。

如何在外来表a和b上创建索引?这甚至可能吗?

当我在postgres中尝试一个简单的Create Index命令时,我得到一个无法在外表a上创建索引

2 个答案:

答案 0 :(得分:3)

你不能在外表上创建索引,而是在外表上写一个触发器并在postgres中创建一个本地表,这样无论何时在你的外表中发生插入,更新或删除,它都会反映在你的本地表中,索引它。

答案 1 :(得分:1)

加入外表会导致查询速度变慢。 由于索引不是外表的选项,因此请考虑在外表上创建实例化视图。物化视图允许索引

CREATE FOREIGN TABLE members_fdw(...)

CREATE MATERIALIZED VIEW members AS 
       select * from members_fdw  
       WITH  DATA 

CREATE UNIQUE INDEX "member_id" ON members USING btree ("id");