问题标签 [postgresql-10]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
210 浏览

php - PG_Fetch_Objects 从递归查询中只返回一行

我对这个问题非常绝望,我无法通过谷歌找到任何有用的参考,尽管这应该很容易解决。至少我是这么认为的。

出于性能原因,我替换了一个函数来使用 Postgres 的递归 WITH 查询。我的问题:pg_fetch_object 只返回一行,尽管 pg_num_rows 返回正确的行数(104)。查询本身没问题,我使用其他查询工具得到了干净的结果。

我希望有人可以帮助我,我需要使用 pg_fetch_object 来收集查询结果的所有行,而不仅仅是第一行。请我不知道我做错了什么。这是代码:

0 投票
0 回答
836 浏览

postgresql - Postgresql 没有在没有时区列的时间戳上使用 btree 索引

下面是我在 postgresql 中的表。

我在每次插入和更新时更新 last_updated_at = now() 。

我使用下面的 upsert 查询为“profile1”、“profile2”等插入了多达 350000 个随机行。

但是,在运行以下查询后:

我知道 postgres 没有在 last_updated_at 列上使用索引。下面是输出:

有人可以告诉我这里出了什么问题.. 为什么 postgres 不在 last_updated_at 字段上使用索引?

0 投票
1 回答
585 浏览

sql - 连接查询需要很长时间才能运行 - Postgresql

我有一个查询,运行时间太长。我正在使用 PostgreSQL 10.3。在我参与此查询的表中,每个表中有大约 350 万条记录。查询是:

在这些表中,我有索引:

这是查询计划(explain (analyse, buffers)):

0 投票
2 回答
74 浏览

sql - 为每个等级分批记录,然后在 postgres 中 JOIN,然后 LIMIT 1

我正在尝试提高查询的性能。据我了解,当我认为没有必要时EXPLAIN ANALYZE,我的查询考虑了太多记录。songs

共有三个表artists(artist_id, score)和。songs(song_id, artist_id)listened(song_id)

我当前的查询如下所示:

理想情况下(至少在我看来),查询应遵循以下步骤:

  1. 按等级对artists表格进行排名。
  2. 拿一批评分最高的艺术家。可以是一位或多位艺术家。

  3. 加入表格songs,但排除已listened歌曲。

  4. 现在我们想随机选择一首歌曲,给每个艺术家平等的机会。 ORDER BY random(), DISTINCT BY (artist_id),LIMIT 1

  5. 如果有这样的歌曲,我们停止并返回它。否则,取下一批艺术家(排名最接近的较低等级)并重复这些步骤。

    • 要停止,要么返回一首歌曲(很可能在几次迭代之后),要么已经考虑了所有艺术家。

谢谢你。

0 投票
2 回答
109 浏览

sql - 计算平均时间间隔长度

我准备了一个简单的SQL Fiddle来演示我的问题 -

在 PostgreSQL 10.3 中,我将用户信息、两人游戏和移动存储在以下 3 个表中:

假设 2 名玩家 Alice 和 Bob 已经玩了 3 场比赛:

让我们假设第一场比赛打得很快,每分钟都在下棋。

但后来他们冷静了 :-) 并玩了 2 场慢速比赛,每 10 分钟移动一次:

在一个包含游戏统计数据的网页上,我想显示每个玩家移动之间的平均时间。

所以我想我必须使用PostgreSQL的LAG窗口功能

由于可以同时玩几场比赛,我正在尝试PARTITION BY gid(即通过“游戏ID”)。

不幸的是,我得到一个语法错误窗口函数调用不能与我的 SQL 查询嵌套:

更新:

由于我的数据库中的游戏数量很大并且每天都在增长,我尝试(这里是新的SQL Fiddle)向内部选择查询添加条件:

但是由于某种原因,这会将返回值彻底更改为 1 分 45 秒。

我想知道,为什么内部 SELECT 查询突然返回更多行,可能是我的 JOIN 中缺少某些条件?

更新 2:

哦,好吧,我明白为什么平均值会减少:通过具有相同时间戳(即played - prev_played = 0)的多行,但是如何修复 JOIN?

更新 3:

没关系,我错过了m.gid = g.gid AND我的 SQL JOIN 中的条件,现在它可以工作了

0 投票
5 回答
2050 浏览

permission-denied - 复制自(pgAdmin4,postgresql10)的权限被拒绝

我在 Windows 10 笔记本电脑上使用 pgAdmin4 和 postgresql 10。当我使用 COPY FROM 导入 CSV 文件时

PGS 返回 Permission denied 的错误信息:

错误:ERREUR:n'a pas pu ouvrir le fichier « C:\Users\NOMUSER\Desktop\MONDOSSIER\Fichier.csv » 倒空演讲:权限被拒绝

提示:复制到 indique au serverur PostgreSQL de lire un fichier。Vous pourriez vouloir utiliser la fonctionnalité \copy de psql pour lire en local。

SQL 状态:42501

请问是什么问题?我看一个解决方案,但我没有找到!非常感谢:)``

0 投票
0 回答
149 浏览

postgresql - Postgres jsonb 高级搜索

我已经发布了一个类似的问题,但我必须精确一点......

这是原始帖子:[ Postgres jsonb search in array with greater operator (with jsonb_array_elements)

如果我总结一下,

这是数据库声明(简化):

这是插入的一个例子。

事实上,我可以在 JSONB 列中存储任何内容,现在我想使用特定的运算符进行搜索。

查询示例:

  • PAYABLE_INVOICE_LINES 中至少有一行大于 100.00 的所有文档:data_block.PAYABLE_INVOICE_LINES.AMOUNT > 100.00

  • 所有在 CARS 中以 'FERRARI' 开头的行的文档:data_block.CARS.MODEL like 'FERRARI%'

  • TOTAL_AMOUNT = 100.00 的所有文档

  • COMMONS.DATE > "2018-04-30" 的所有文件

  • 列表中包含 CARS.MODEL 的所有文件('PORSCHE CAYENNE')

  • data_block.PAYABLE_INVOICE_LINES.AMOUNT 介于 100.00 和 150.00 之间的所有文档

Bref,我想查询所有我想要的。我想通过排序限制为 50 个结果。

我的数据库包含数百万行,我有一些性能问题......

我已经使用 EXISTS 实现了解决方案:

这很好但还不够……有些查询很慢。> 20 秒。

我不知道文件的结构。我们可以插入汽车、发票、身份证,客户可以创建自己的结构。因此,我无法轻松创建索引,也无法创建函数来准备结果。

在 JSON 对象中的数组上进行搜索时,查询非常慢。像 PAYABLE_INVOICE_LINES。

您对如何提高性能有任何想法...?

0 投票
1 回答
19799 浏览

python - Postgres Psycopg2 创建表

我是 Postgres 和 Python 的新手。我正在尝试创建一个简单的用户表,但我不知道为什么它没有创建。没有出现错误信息,

0 投票
1 回答
180 浏览

postgresql - 转储无法在 hstore 列的数组上重新创建索引

我正在倾销一个大型数据库pg_dump -O -U <user> <db> >dump.sql

这是 dump.sql 的要点,所有无关的东西都被剥离了。

使用 将转储导入另一个 Postgres 实例(相同设置)时,第147 行psql -f dump.sql -U <user> <db>发生以下错误:CREATE INDEX

所以除了决赛之外的一切CREATE INDEX都奏效了。

现在我使用之前失败的命令连接到数据库psql -U <user> <db>并粘贴CREATE INDEX...索引的创建没有任何问题。

我尝试过的几件事:

  • 仅转储结构--schema-only会创建一个可以正常导入的转储。仅当至少插入一行作为转储的一部分时才会出现此问题。
  • 我倾向于排除所有者/权限作为原因,因为我使用-O.
  • 这个特定的索引已有多年历史,直到最近,类似的转储都运行良好。因此,它可能与升级到 Postgres 10.3 有关。但是,我没有简单的方法来测试旧版本的转储,因为它不向下兼容。

知道这里发生了什么吗?提前致谢!

0 投票
1 回答
116 浏览

arrays - 在没有 array_to_json 的 PostgreSQL 中将记录数组转换为 JSON

PostgreSQL 中的 SQL:

它是一个array text[]. 我想把它转换成json这样:

我试过array_to_json了,但它不能。