小编mhe*_*xon的帖子

查询优化或缺少索引?

我有这个查询将一些数据从t2into聚合t1。这样做是为了优化我正在处理的应用程序,以便减少对数据库的查询。我选择了下面的方法来确保我不必更新t1两次。

最大的问题是,我可能在这里遗漏了哪些索引,查询可以进一步优化吗?

update t1
set
  col1 = t2.col1_count,
  col2 = t2.col2_sum,
  col3 = t2.col3_sum
from  (
  select
    b.user_id, b.t1_id,
    coalesce(count(b.id), 0) as col1_count,
    sum(case when b.col5 = true then b.col2 else 0 end) as col2_sum,
    sum(case when b.col5 = false then b.col3 else 0 end) as col3_sum
  from t1 a 
    left join t2 b on b.t1_id = a.id
  where
    b.user_id = 1
  group by b.user_id, b.t1_id
) as t2
where 
  t2.t1_id = t1.id;
Run Code Online (Sandbox Code Playgroud)

编辑 …

postgresql

3
推荐指数
1
解决办法
1528
查看次数

如何按依赖顺序删除和创建 postgresql 视图?

我发现以下/sf/answers/679843601/这很好,但对我来说仍然太多体力劳动。我需要以正确的顺序重新创建视图我将如何去做?

@dbenhur 谈到以下内容:

为了更完整,人们可以弄清楚如何查询哪些视图取决于您正在修改的表,并使用该查询而不是枚举视图名称。需要了解 pg_rewrite | pg_rule 来做到这一点,我认为

我不确定这到底是什么意思,但我会告诉你我需要,你告诉我是否可能。

我在一个 rails 应用程序中工作,我试图在其中维护视图和函数作为 rails 迁移的一部分,不幸的是这变得一团糟,我将我们的视图和函数转储到单独的文件中。在我看来,有两种前进的方式。我可以为这些使用单个文件,这使得它很麻烦,但我想 DDL 的顺序将由 pg_dump 管理。

或者,当我转储视图和函数时,我也可以查询并创建一个依赖树,稍后我会用它来重新创建它们。原因是手动更改视图中的列名变得太复杂了。

其他人如何维护他们的 DDL?有人做过我想做的事吗?

postgresql postgresql-9.4

3
推荐指数
1
解决办法
2048
查看次数

标签 统计

postgresql ×2

postgresql-9.4 ×1