PostgreSQL中是否可以在包含多个表字段的表达式上放置索引。例如,加速查询以下形式的索引:
SELECT *, (table1.x + table2.x) AS z
FROM table1
INNER JOIN table2
ON table1.id = table2.id
ORDER BY z ASC
答案 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的输出。