繁体   English   中英

针对postgres中的视图的查询非常慢-可以增强吗?

[英]Very slow query against view in postgres - possible to enhance?

我有一个Postgres数据库,其中有大约一百万个条目(并且正在快速增长)。 我已经创建了该数据库的视图,其中每一行的某些列是连接在一起的(并以这种格式):

concat         | count
david55single    5

我正在做的是获取这种格式的字符串,然后检查视图中该字符串是否在视图中以及计数是多少。 这是我的查询:

SELECT count from concatview WHERE concat = '<somestring>'; 

此查询会花费很长时间,这很糟糕,因为我们对用户的每个请求都执行此查询。 有什么方法可以延长查询时间? 根据我从文档中了解到的,只能对物化视图编制索引? 我是否需要创建实例化视图并经常刷新视图,或者是否有其他方法可以增强常规视图?

 create index on mytab(col1||col2||col3)

确保在索引上使用与视图相同的语法。 如果您使用concat()函数进行串联,则需要创建IMMUTABLE版本的concat()(不可变表示在给定相同输入的情况下,它始终返回相同的输出,而标准concat则不是)标记为不可变的,但是在很多情况下,可以安全地将其包装为不可变的函数)。 这将允许对视图的查询利用索引。

注意:|| 如果任何列可为空,则串联运算符将不能很好地发挥作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM