数据库1在数据库2上有外来表a和b。
我们如何在这些外来表a和b上创建索引。这些外表分别是database2.c和database2.d表的包装器,它们具有必要的索引。
如何在外来表a和b上创建索引?这甚至可能吗?
当我在postgres中尝试一个简单的Create Index命令时,我得到一个无法在外表a上创建索引
答案 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");