合并两个相同的表进行查询时,Postgres视图变慢

时间:2018-12-13 09:20:28

标签: sql postgresql view

好的。 我有一个非常大的表格用于统计。我还有一个数据密度较小的表,它提供了备份以及清除主表的方法。它们在列,索引,约束方面都是相同的。

第二个表已使用主表中的特定异常进行更新,因此,当我们清除数据时,异常仍保持记录。

所以我创建了一个视图,该视图在2之间做一个UNION以便查询数据,

表格的简化版本...

ID
TIMESTAMP
KEY_1
KEY_2

KEY_1,KEY2,TIMESTAMP有唯一的约束

和TIMESTAMP上的索引

如果我在任一表中查询时间戳范围和单个key_1,key_2,它将使用约束。 如果我查询视图,它将使用时间戳索引,从而读取所有key_1,key_2值。 即使使用另一个索引TIMESTAMP KEY_1,KEY_2也会使用TIMESTAMP索引读取(KEY_1和KEY_2是从JOINED表中接收的)

因此,读取VIEW中的大量数据要花很多时间,因为它比直接读取表扫描的行多了10000。

似乎我无法在视图中添加约束,该怎么办?

0 个答案:

没有答案