一对多索引

问题描述 投票:0回答:1

我知道postgres使用B树/B+树进行索引。我将树中的每个节点可视化为键值对,其中键代表正在搜索的实际值,值是该行在磁盘中的位置。

这对于一对一关系来说看起来不错。一对多关系的 BTree 索引看起来像外键索引吗?每个外键索引可以映射到子表中的多行。索引发生在这里吗?基于普通键值对的索引似乎不适合这种情况。

postgresql indexing b-tree
1个回答
0
投票

您所描述的严格意义上只需要引用表上的单个

unique
索引,以便限制其值来唯一标识所引用的特定行。具有指向 A 的引用的另一个表 B 上的索引很有帮助,但不是必需的。

您可以添加它,它会帮助您找到 B 中指向特定 A 的所有行。第二个索引不必是

unique
类型,除非您特别想只允许 1:1 链接。我想这可能是你需要澄清的:

  • 所有
    unique constraints
    都需要
    unique
    索引
  • 要引入外键,您确实需要唯一约束,因此需要索引
  • 并非所有索引都必须是
    unique
© www.soinside.com 2019 - 2024. All rights reserved.