小编ARX*_*ARX的帖子

视图对 PostgreSQL 的性能有害吗?

以下摘自一本关于数据库设计的书(Beginning Database Design ISBN:0-7645-7490-6):

使用视图的危险在于根据视图过滤查询,期望读取非常大的表的非常小的部分。任何过滤都应该在视图中完成,因为在视图中的查询完成执行之后,才会应用针对视图本身的任何过滤。视图通常对加快开发过程很有用,但从长远来看,它会完全扼杀数据库性能。

以下是 PostgreSQL 9.5 文档的摘录:

充分利用视图是良好 SQL 数据库设计的一个关键方面。视图允许您封装表结构的细节,这些细节可能会随着应用程序的发展而改变,并隐藏在一致的接口后面。

这两个来源似乎相互矛盾(“不要用视图设计”与“用视图设计”)。

但是,在 PG 中,视图是使用规则系统实现的。因此,可能(这是我的问题)针对视图的任何过滤都被重写为视图中的过滤器,从而导致对基础表执行单个查询。

我的解释是否正确并且 PG 将 WHERE 子句组合进和出视图?还是单独运行它们,一个接一个?任何简短的、自包含的、正确的(可编译的)示例?

postgresql optimization view

70
推荐指数
4
解决办法
5万
查看次数

BEGIN ATOMIC 在 PostgreSQL SQL 函数/过程中意味着什么?

在 PG 14 的文档中,在 参考资料CREATE FUNCTION部分中,手册指出函数的主体LANGUAGE SQL可以是单个语句:

RETURN expression
Run Code Online (Sandbox Code Playgroud)

或一个块:

BEGIN ATOMIC
statement;
statement;
...
statement;
END
Run Code Online (Sandbox Code Playgroud)

没有对该块的语义给出任何解释。这看起来类似于BEGIN ... END;PL/pgSQL 中的块,但似乎有些不同。

在 内 或 外 写一组语句有什么区别BEGIN ATOMIC ... END?什么时候需要使用这样的块?关键字是ATOMIC强制的吗?

postgresql functions postgresql-14

18
推荐指数
1
解决办法
8366
查看次数

psql 多行命令:如何编辑前面的行?

当在 psql 中编写跨多行的查询时,有时我意识到我在之前编写的其中一行中犯了错误。在下面的示例中,

select * form (
etc, etc...
Run Code Online (Sandbox Code Playgroud)

第一行有一个错误,但我已经在第二行写了。如何返回并编辑第一行(并将“form”更改为“from”)?我一直无法做到这一点。

因为一个错误而必须重写所有内容是非常不方便的(特别是对于长的多行查询)。

postgresql psql

5
推荐指数
0
解决办法
4546
查看次数

如何在 Ubuntu 16.04 上卸载 pgAdmin4?

我成功安装了 pgAdmin4

pip install pgadmin4-2.0-py2.py3-none-any.whl
Run Code Online (Sandbox Code Playgroud)

但是之后,pip list没有显示与 pgAdmin 相关的任何内容,所以我不知道要传递给pip uninstall <package_name>.

如果我这样做pip uninstall pgadmin4,我会得到:

无法卸载要求 pgadmin4,未安装

我应该删除安装 pgAdmin 的虚拟环境目录吗?

ubuntu pgadmin python

4
推荐指数
2
解决办法
5万
查看次数