我知道postgres使用B树/B+树进行索引。我将树中的每个节点可视化为键值对,其中键代表正在搜索的实际值,值是该行在磁盘中的位置。
这对于一对一关系来说看起来不错。一对多关系的 BTree 索引看起来像外键索引吗?每个外键索引可以映射到子表中的多行。索引发生在这里吗?基于普通键值对的索引似乎不适合这种情况。
您所描述的严格意义上只需要引用表上的单个
unique
索引,以便限制其值来唯一标识所引用的特定行。具有指向 A 的引用的另一个表 B 上的索引很有帮助,但不是必需的。
您可以添加它,它会帮助您找到 B 中指向特定 A 的所有行。第二个索引不必是
unique
类型,除非您特别想只允许 1:1 链接。我想这可能是你需要澄清的:
unique constraints
都需要 unique
索引unique