问题标签 [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.
php - PG_Fetch_Objects 从递归查询中只返回一行
我对这个问题非常绝望,我无法通过谷歌找到任何有用的参考,尽管这应该很容易解决。至少我是这么认为的。
出于性能原因,我替换了一个函数来使用 Postgres 的递归 WITH 查询。我的问题:pg_fetch_object 只返回一行,尽管 pg_num_rows 返回正确的行数(104)。查询本身没问题,我使用其他查询工具得到了干净的结果。
我希望有人可以帮助我,我需要使用 pg_fetch_object 来收集查询结果的所有行,而不仅仅是第一行。请我不知道我做错了什么。这是代码:
postgresql - Postgresql 没有在没有时区列的时间戳上使用 btree 索引
下面是我在 postgresql 中的表。
我在每次插入和更新时更新 last_updated_at = now() 。
我使用下面的 upsert 查询为“profile1”、“profile2”等插入了多达 350000 个随机行。
但是,在运行以下查询后:
我知道 postgres 没有在 last_updated_at 列上使用索引。下面是输出:
有人可以告诉我这里出了什么问题.. 为什么 postgres 不在 last_updated_at 字段上使用索引?
sql - 连接查询需要很长时间才能运行 - Postgresql
我有一个查询,运行时间太长。我正在使用 PostgreSQL 10.3。在我参与此查询的表中,每个表中有大约 350 万条记录。查询是:
在这些表中,我有索引:
这是查询计划(explain (analyse, buffers)
):
sql - 为每个等级分批记录,然后在 postgres 中 JOIN,然后 LIMIT 1
我正在尝试提高查询的性能。据我了解,当我认为没有必要时EXPLAIN ANALYZE
,我的查询考虑了太多记录。songs
共有三个表artists(artist_id, score)
和。songs(song_id, artist_id)
listened(song_id)
我当前的查询如下所示:
理想情况下(至少在我看来),查询应遵循以下步骤:
- 按等级对
artists
表格进行排名。 拿一批评分最高的艺术家。可以是一位或多位艺术家。
加入表格
songs
,但排除已listened
歌曲。现在我们想随机选择一首歌曲,给每个艺术家平等的机会。
ORDER BY random()
,DISTINCT BY (artist_id)
,LIMIT 1
如果有这样的歌曲,我们停止并返回它。否则,取下一批艺术家(排名最接近的较低等级)并重复这些步骤。
- 要停止,要么返回一首歌曲(很可能在几次迭代之后),要么已经考虑了所有艺术家。
谢谢你。
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 中的条件,现在它可以工作了:
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
请问是什么问题?我看一个解决方案,但我没有找到!非常感谢:)``
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。
您对如何提高性能有任何想法...?
python - Postgres Psycopg2 创建表
我是 Postgres 和 Python 的新手。我正在尝试创建一个简单的用户表,但我不知道为什么它没有创建。没有出现错误信息,
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 有关。但是,我没有简单的方法来测试旧版本的转储,因为它不向下兼容。
知道这里发生了什么吗?提前致谢!
arrays - 在没有 array_to_json 的 PostgreSQL 中将记录数组转换为 JSON
PostgreSQL 中的 SQL:
它是一个array text[]
. 我想把它转换成json
这样:
我试过array_to_json
了,但它不能。