索引跨越PostgreSQL中的多个表

时间:2013-05-06 15:38:09

标签: sql postgresql

PostgreSQL中是否可以在包含多个表字段的表达式上放置索引。例如,加速查询以下形式的索引:

SELECT *, (table1.x + table2.x) AS z
FROM table1
INNER JOIN table2
ON table1.id = table2.id
ORDER BY z ASC

2 个答案:

答案 0 :(得分:13)

不可能在许多表上都有索引,也不能保证加速任何事情,因为你不会总是得到一个只有索引扫描。你真正想要的是materialized view,但pg也没有。{您可以尝试使用触发器like this or this自行实现。


更新

如@petter所述。物化视图were introduced in 9.3

答案 1 :(得分:3)

不,这在任何目前正在发送的SQL dbms中是不可能的。 Oracle支持bitmap join indexes,但这可能不相关。我不清楚你是想要只对多个表的连接列进行索引,还是要在连接表的任意列上建立索引。

要确定性能问题的真实来源,请学习阅读PostgreSQL EXPLAIN ANALYZE的输出。