- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两张 table
表条目
id | val1 | val2-------+------+------+ ent_1 | xxx | xxx ent_2 | xyy | yyy ent_3 | zxz | zzz ent_4 | zxz | zzz
Table entries_list
id | entry_id | val1 | val2-----+----------+------+------- 1 | ent_1 | xxx | xxx 2 | ent_1 | xyy | yyy 3 | ent_2 | zxz | zzz 4 | ent_2 | zxz | zzz
entries_list.entry_id
is forigen key from entries.id
So I need to find the entries
which have a corresponding entry_list
references. I don't want the entries
which doesn't have any reference in entry_list
and the result I am expecting from this is
[{
id: ent_1,
entries: [{
id: 1,
val1: xxx,
val2: xxx
}, {
id: 1,
val1: xxx,
val2: xxx
}]
}, {
id: ent_2,
entries: [{
id: 3,
val1: xxx,
val2: xxx
}, {
id: 4,
val1: xxx,
val2: xxx
}]
}]
由于所需的结果和结构,我决定使用 Json_agg 和 Json_build_object 查询如下所示
SELECT entries.id,
Json_agg(Json_build_object('id', list.id, 'val1', list.val2, 'val2',
list.val2)) AS sub_list
FROM entries
INNER JOIN (SELECT id,val1,val2
FROM entries_list) AS list
ON entries.id = list.entry_id
GROUP BY entries.id
ORDER BY entries.id
但是对于 1M 记录,它的表现非常糟糕,大约需要 10 秒。那么改变这种情况的更好方法是什么?
我想以计划方式获取数据并在 sql 之外的代码中对其进行分组,但是应该如何在这两种方法中修改查询。?
我有 nodejs
后端和 pg
模块作为连接器。
最佳答案
这个版本的表现如何?
SELECT e.id,
(SELECT Json_agg(Json_build_object('id', el.id, 'val1', el.val2, 'val2',
el.val2))
FROM entries_list el
WHERE el.entry_id = e.id
) as sub_list
FROM entries e
ORDER BY e.id ;
为了性能,您需要在 entries_list(entry_id, id, val2)
上建立索引。第一个键尤为重要。
关于sql - 在 postgres 中使用 json_agg 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461405/
CREATE TABLE content ( code INTEGER NOT NULL , nameid TEXT NOT NULL ) INSER
我正在尝试使用像这样的代码段从表中获取 JSON 格式的结果。 SELECT json_agg(json_build_object('latitude',my_table.latitude,
json_agg() 返回这样的结果 [{..},{..}...] 我试图找到是否有办法将此数组更改为单个对象,我的结果是一个单一的对象,因为它返回一个对象数组我有一个问题反序列化。 JsonCon
我在 Postgres 中像这样使用 json_agg json_agg((e."name",e."someOtherColum",e."createdAt") order by e."created
我有一个表,其中包含如下两列: rev | level ----------- B | 1001 B | 1002 B | 1003 C | 1004 C | 1005 D |
public function fetchdrug(Request $search_drug){ $filter_drug = $search_drug->input('search_drug
函数中的多个json_aggregates 我的 Postgres 数据库的主表与其他表有一对多的关系,每个关系由一个 [*]_references 表连接。我需要一个以 JSON 格式返回其他表结果
我使用 json_agg 函数从 PostgreSQL 请求返回一个 JSON 数组。但是,当没有找到任何行时,json_agg 返回一个空字符串,而不是一个空的 JSON 数组 [](如果我理解
我有两张 table 表条目 id | val1 | val2-------+------+------+ ent_1 | xxx | xxx ent_2 | xyy | yyy ent_
我已经阅读了几个关于这个错误的 stackoverflow,但我还是不明白。 -- Returns full JSON document of a user, and all their user_f
关注 this post ,我有一个返回下表的 SQL 查询: team (json) "{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"
我有一个如下所示的查询: SELECT *, (SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as de
如果我想在单个查询中获取聚合在 json 数组中的 json 对象的键列表。这是我正在尝试的,它给了我一个错误: Postgres 版本:9.3 postgres=# create temporary
我正在使用 LEFT JOIN 存在没有右表匹配的情况,因此空(null)值被替换为右表列。结果,我将 [null] 作为 JSON 聚合之一。 SELECT C.id, C.name, json_a
我试图了解我在类似的数据库查询之间看到的巨大速度差异,并且我希望对为什么某些聚合比其他聚合慢得多的原因有一些了解。 我注意到一个简单的文档检索查询存在一些速度问题,其中很大一部分似乎是 json_ag
我正在努力处理以下 SQL 查询: 有一个表data_tracks,其中包含描述行程的坐标。每个行程都由 trip_log_id 唯一标识。到达旅行目的地后,用户需要参与调查。调查的答案存储在表 cr
我是一名优秀的程序员,十分优秀!