标签: postgresql

SQL:2008 标准中是否指定了 CTE(带查询)的优化栅栏行为?如果有,在哪里?

我看到频繁引用WITH查询(公共表表达式,或 CTE)充当优化栅栏,服务器不允许将过滤器下推到 CTE 查询中,将公共表达式从 CTE 中拉出等。它经常被声称成为 SQL 标准要求的行为。

CTE绝对PostgreSQL 中的优化栅栏……但这是标准要求的,还是实际上只是实现细节?

例如,这些邮件列表帖子声称或建议它是标准的:

评论中提到它之后,我被问到它的指定位置 - 在查看了 SQL:2008 的唯一草案后,我可以访问我并没有太多运气找到它。

我还没有深入研究标准,所以我希望有人提出建议:标准实际上是否需要PostgreSQL中CTE的优化围栏?如果是这样,它在哪里指定?还是 Pg 邮件列表上的陈述有误?

另见todo list上的线程CTE优化围栏?.

postgresql optimization sql-standard

24
推荐指数
1
解决办法
2883
查看次数

我的 Postgres 每秒执行多少次查询?

如何知道我的 Postgres 数据库每秒执行多少次查询?

postgresql

24
推荐指数
1
解决办法
4万
查看次数

真空冷冻与完全真空

有人可以解释VACUUMPostgreSQL 中这些类型之间的区别吗?

我阅读了文档,但它只是说FULL锁定表并FREEZE“冻结”元组。我认为那是一样的。我错了吗?

postgresql vacuum

24
推荐指数
2
解决办法
3万
查看次数

使用 JSONB 加入 PostgreSQL

我有这个 SQL:

CREATE TABLE test(id SERIAL PRIMARY KEY, data JSONB);

INSERT INTO test(data) VALUES
   ('{"parent":null,"children":[2,3]}'),
   ('{"parent":1,   "children":[4,5]}'),
   ('{"parent":1,   "children":[]}'),
   ('{"parent":2,   "children":[]}'),
   ('{"parent":2,   "children":[]}');
Run Code Online (Sandbox Code Playgroud)

那会给:

 id |                 data                 
----+--------------------------------------
  1 | {"parent": null, "children": [2, 3]}
  2 | {"parent": 1, "children": [4, 5]}
  3 | {"parent": 1, "children": []}
  4 | {"parent": 2, "children": []}
  5 | {"parent": 2, "children": []}
Run Code Online (Sandbox Code Playgroud)

当进行正常的一对多时,它会显示如下内容:

SELECT * 
FROM test x1
  LEFT JOIN test x2
    ON x1.id = (x2.data->>'parent')::INT;
 id |                 data                 | id | …
Run Code Online (Sandbox Code Playgroud)

postgresql join json postgresql-9.4

24
推荐指数
1
解决办法
5万
查看次数

在多列上选择 DISTINCT

假设我们有一个包含四列(a,b,c,d)相同数据类型的表。

是否可以选择列中数据中的所有不同值并将它们作为单个列返回,或者我是否必须创建一个函数来实现这一点?

postgresql performance postgresql-9.4 distinct postgresql-performance

24
推荐指数
4
解决办法
8万
查看次数

在日期间隔内滚动总和/计数/平均值

在跨越 18 个月内跨越 1,000 多个实体的交易数据库中,我想运行一个查询,将每个可能的 30 天期间entity_id按其交易金额的总和和该 30 天内的交易计数进行分组,并且以我可以查询的方式返回数据。经过大量测试,这段代码完成了我想要的大部分内容:

SELECT id, trans_ref_no, amount, trans_date, entity_id,
    SUM(amount) OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_total,
    COUNT(id)   OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS trans_count
  FROM transactiondb;
Run Code Online (Sandbox Code Playgroud)

我将在更大的查询中使用类似的结构:

SELECT * FROM (
  SELECT id, trans_ref_no, amount, trans_date, entity_id,
      SUM(amount) OVER(PARTITION BY entity_id, date_trunc('month',trans_date) ORDER BY entity_id, trans_date ROWS BETWEEN UNBOUNDED PRECEDING AND …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate

24
推荐指数
1
解决办法
9万
查看次数

有没有一种好方法可以为 postgres 表中的每条记录运行触发器?

我有一个系统,我无法控制某些表的设计(通过 Slony-I 复制),所以我有一系列我们称之为“影子表”的东西,我从复制的表中提取一些信息,并将其存储在我需要的处理形式中,同时剥离我想忽略的记录。

现在,在设置新副本后,我运行更新并将值设置回自身(例如,UPDATE tablename SET field=field)以强制运行触发器,但有些表有数百万条记录,并且还在增长,可能需要 30 分钟. (然后还有真空)。

有没有更好的方法来触发它,或者有什么方法可以编写一个函数,使其可以处理传入的输入或NEW取决于调用上下文?我不愿意保留两个不同的功能,因为我已经看到太多次更新一个而不是另一个。

postgresql trigger plpgsql

23
推荐指数
1
解决办法
6654
查看次数

如何在 PostgreSQL 8.4 中安装 pgcrypto?

我正在使用 Ubuntu Server 10.10 并且我已经使用apt-get install postgresql. 我想使用内置sha1()功能,但似乎必须先安装pgcrypto。但我不知道如何安装它。

没有pgcrypto,如果我尝试使用安装它apt-get install pgcrypto,我不找到以任何文件pgcrypto在我的系统(我想find / -name "pgcrypto*")。

如何安装 pgcrypto 以便我可以digest('word-to-hash','sha1')在我的数据库查询中使用该函数?


更新:我正在努力在另一台 Ubuntu 机器上安装 pgcrypto。使用sudo apt-get install postgresql-contrib-8.4如何将软件包安装到我当前的 PostgreSQL 数据库后安装软件包?

postgresql pgcrypto installation postgresql-8.4

23
推荐指数
2
解决办法
6万
查看次数

如何在 PostgreSQL 中将字符串转换为双精度?

如何在 PostgreSQL 中将字符串转换为双精度?

我试过类似的东西:

update points set latitude2 = cast(latitude as double) ;
Run Code Online (Sandbox Code Playgroud)

其中纬度是一个字符串,纬度2是一个双精度值。我只是无法让它工作。

postgresql

23
推荐指数
1
解决办法
13万
查看次数

如何在 PostgreSQL 中存储一字节整数?

在 PostgreSQL 文档中,据说整数数据类型可以存储在两字节、四字节或八字节的空间中。我的数据库中表的一列包含一个一字节整数值,我希望它以一字节数据类型存储。

  1. 在 PostgreSQL 中是否有使用单字节整数数据类型的扩展或方法?
  2. NUMERIC(1,0) 是多少字节?

postgresql datatypes storage postgresql-9.6

23
推荐指数
1
解决办法
1万
查看次数