当前位置: 首页 > 知识库问答 >
问题:

PostgreSQL存储id列表的有效方法

柴辰阳
2023-03-14

在我的PostgreSQL中,我有两个表boardtables,它们之间有 关系(一个 /code>可以有多个 )。

用户可以在棋盘上放几张牌。为了实现此功能,我通常会创建另一个名为< code>cards_on_hold的表,具有< code>OneToMany关系,并将保留卡id放入此表中。为了获取板的数据,我将使用< code>board和< code>cards_on_hold之间的JOIN。

PostgreSQL中有没有更有效的方法来保存卡片的ID?例如,一些功能可以将此列表内联存储在board表中?我需要稍后在INSQL子句中使用此ID列表来过滤卡片集。

共有1个答案

齐泰
2023-03-14

Postgres确实支持整数数组(假设您的id是整数):

http://www.postgresql.org/docs/9.1/static/arrays.html

然而,与单独的表相比,操作这些数据有点困难。例如,对于单独的表,您可以设置唯一性保证,这样您就不会有重复的id(假设您想要这样做)。要使用数组实现同样的事情,您必须创建一个存储过程来检测重复(例如在插入时)。这很难(如果可能的话)像简单的唯一约束一样高效。更不用说您失去一致性保证了,因为您不能对这样的数组设置外键约束。

因此,一般来说,连续性将是内联列表的一个问题。同时,我怀疑你会得到任何明显的性能提升。毕竟,所有数组都不应该用作“聚合外键”恕我直言。

总而言之:我建议你选择一张单独的桌子。

 类似资料:
  • 问题内容: 目前,我的代码中有很多类似于以下内容的python对象: 现在,我想将其转换为Django模型,其中self.myName是字符串字段,而self.myFriends是字符串列表。 由于列表是python中如此常见的数据结构,因此,我希望其中有一个Django模型字段。我知道我可以使用ManyToMany或OneToMany关系,但是我希望避免代码中的额外间接访问。 问题答案: 将这种

  • 我想使用ID列表从CRUD存储库中获取某些记录,目前我的代码如下所示: 有没有更好、更有效的方法来做到这一点?基本上,我正在考虑存储库有大量记录的情况。

  • 卡桑德拉新手问题。我正在使用REST调用从社交网站收集一些数据。因此,我最终得到了以JSON格式返回的数据。 JSON 只是我的表中的列之一。我试图弄清楚存储JSON字符串的“最佳实践”是什么。 首先我想到使用map类型,但JSON包含字符串、数字类型等的混合。看起来我不能为map键/值声明通配符类型。JSON字符串可能非常大,可能超过10KB。我可以将其存储为字符串,但这似乎效率低下。我会假设这

  • 假设我有一个用户模式/模型,用户有一个朋友列表。Mongoose希望您将好友列表(外键/ObjectID类型)存储为数组,对吗?这意味着如果我想通过ID找到我的朋友,Mongoose将搜索数组,直到找到具有我想要的ID的朋友的第一个实例。那似乎真的是时间低效,不是吗?有更好的办法吗?

  • 我有一个关于字典存储的问题。 我在读Trie数据结构,到目前为止,我已经读到它作为前缀树工作得很好。但是,我来到Trie-DS是为了看看它是否能有效地减少通过同一个单词形成的字母排列的存储。 对于ex:单词“ant”、“tan”和NAT有相同的字母,但根据Trie的说法,它继续为这些单词创建两个独立的路径。我可以理解Trie是用来存储前缀和减少冗余的。但有人能帮我减少这里的冗余吗。我想的一种方法是

  • 问题内容: 我使用TablePlus(SQL客户端)将Postgres SQL文件导入到服务器,但是在插入新行后出现如下错误: SQLSTATE [23505]:唯一冲突:7错误:重复的键值违反了唯一约束\“ users_pkey \”详细信息:密钥(id)=(1)已存在 我知道它是由序列值0引起的,需要通过以下代码进行更新: 但是,如果我必须一一写入所有表序列(可能是数百个序列),则需要花费大量