相关疑难解决方法(0)

列出指定表的所有列

我正在数据库中寻找一条我不了解的精确信息。数据库在一台单独的机器上,但我可以登录它,并psql以管理员权限启动命令行。

这是第三方产品,他们回答问题的速度很慢。我知道数据在那个数据库里面,所以我想做一点逆向工程。

给定一个表名,是否可以获得该表中列名的列表?

例如,在 SQL Server 中,可以将表转储到可重用CREATE语句中,该语句以文本方式列出了该表所包含的所有列。

postgresql metadata information-schema catalogs

386
推荐指数
5
解决办法
74万
查看次数

视图对 PostgreSQL 的性能有害吗?

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

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

以下是 PostgreSQL 9.5 文档的摘录:

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

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

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

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

postgresql optimization view

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

错误:找不到数据类型 information_schema.sql_identifier 的数组类型

我正在尝试运行以下 sql 命令:

SELECT ARRAY(
    SELECT column_name 
    FROM information_schema.columns 
    WHERE table_name ='gis_field_configuration_stage'
);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR:  could not find array type for datatype information_schema.sql_identifier
Run Code Online (Sandbox Code Playgroud)

postgresql array catalogs

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

哪个更快:pg_catalog 或 information_schema?

pg_catalog我了解和之间的高级差异information_schema

但在许多情况下,工具可以选择使用其中任何一个。我想知道是否存在性能原因导致我们应该选择其中之一。其中之一的查询预计会更快吗?它们在锁方面的工作方式相同吗?

postgresql information-schema pg-catalog

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