在PostgreSQL中,可以在非实例化视图上建立索引吗?
我在应用程序中使用视图,它基本上可以很好地工作,但是我想加快对其数据的访问。我可以切换到实例化视图,但是我不想刷新它。
来自http://postgresql.nabble.com/Indexes-not-allowed-on-read-only-views-Why-td4812152.html
在postgres中,视图本质上是宏,因此没有要索引的数据
和
普通(非实体化)视图自身没有任何数据,它在查询执行过程中即时将其从一个或多个其他表中提取。视图的执行有点类似于返回集合的函数或子查询,就像您将视图定义替换为原始查询一样。
这意味着该视图将使用原始表上的所有索引,但实际上甚至没有机会检查视图自身的索引,因为该视图的定义已被有效地替换为查询。如果视图定义足够复杂,以至于在原始表的索引无济于事的情况下进行了大量工作,则必须每次都进行该工作。
和
你CAN做的是使用触发器来维护自己的物化视图的常规表,并且对你保持使用触发器表的索引。在邮件列表中对此进行了广泛的讨论,虽然很难使更新在某些实例化视图查询中表现良好,但并不难。
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |