在 PostgreSQL 中是否可以在包含多个表的字段的表达式上放置索引。因此,例如一个索引来加速以下形式的查询:
SELECT *, (table1.x + table2.x) AS z
FROM table1
INNER JOIN table2
ON table1.id = table2.id
ORDER BY z ASC
在 PostgreSQL 中是否可以在包含多个表的字段的表达式上放置索引。因此,例如一个索引来加速以下形式的查询:
SELECT *, (table1.x + table2.x) AS z
FROM table1
INNER JOIN table2
ON table1.id = table2.id
ORDER BY z ASC
不,不可能在许多表上都有索引,而且它真的不能保证加速任何事情,因为你不会总是得到仅索引扫描。你真正想要的是一个物化视图,但 pg 也没有这些。您可以尝试使用类似 this 或 this的触发器自己实现它。
正如@petter 所指出的。物化视图是在 9.3 中引入的。
不,这在任何当前发布的 SQL dbms中都是不可能的。Oracle 支持位图连接索引,但这可能不相关。我不清楚您是否想要仅在多个表的连接列上建立索引,或者是否想要在连接表的任意列上建立索引。
要确定性能问题的真正根源,请学习阅读 PostgreSQL 的EXPLAIN ANALYZE的输出。