gpt4 book ai didi

json - Postgres 决策、JSON 或额外的列?

转载 作者:行者123 更新时间:2023-11-29 13:25:09 29 4
gpt4 key购买 nike

我需要知道哪个检索事件日志的速度更快,但我在比较中找不到:假设需要查找的所有列都有btree索引,需要查找的json对象中的所有键都有GIN索引。

case 1:
ActivityID (int), actorID(int), action(string), object(string), Datetime(date), type(string)

case 2:
ActivityID (int), actorID(int), Datetime(date), type(string), Log(json or hstor) {action="..", object=".."}

case 3:
ActivityID (int), Datetime(date), Log(json or hstor) {actorID:"..", action="..", object="..", type=".."}

case 4:
ActivityID (int), Log(json or hstor) {Datetime="..", actorID:"..", action="..", object="..", type=".."}

我如何决定使用哪一个?查询一堆具有特定类型或 actorID 的记录,其中哪个更快?当它是 json 对象中的键时,还是当它是索引的单独列时,它是否更快?

最佳答案

在 JSON 和列之间进行选择,应该是一个更高层次的决定,而不仅仅是性能。我假设当有人决定使用 JSON 时,他们必须使用它,因为经典列太麻烦了。

毕竟 Postgres 是一个关系数据库,所以除了性能之外,在使用 jsonb 或 hstore 时还有很多限制(考虑连接和外键)

Postgres 的 JSON 与 MongoDB 的不同,后者根本不是关系型的。

回到你的问题,我没有机会真正做测试,但我可以说 JSON 在 Postgres 中的索引性能顶多和列一样好。

编辑:

另请阅读 this .

关于json - Postgres 决策、JSON 或额外的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163345/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com