【问题标题】:Can a database index span tables? I'm on Postgres数据库索引可以跨表吗?我在 Postgres
【发布时间】:2010-03-05 22:52:40
【问题描述】:

是否可以创建一个索引,其中一个列的值来自另一个表?

例子:

model Pet
  primary_key id
  foreign_key Species
end
model Species
  primary_key id
  int genus
end

假设物种种类繁多,而属的种类较少。我想在 Genus 的 Pets 表上创建一个索引。可以吗?

如果是这样,如果您能指出我在 Rails 迁移中的正确方向,我将不胜感激。

【问题讨论】:

  • 我不知道 postgres 但我不相信这是可能的。您绝对可以使用 Species FK 创建索引,但这对您没有帮助,因为真正的属列应该是属表的 FK。

标签: sql ruby-on-rails indexing


【解决方案1】:

没有。在任何关系数据库技术中,“索引”是指表的索引。您可以像这样将两者结合起来:

动物类 + 姓名 + 身份证 + 级别 + parent_id

其中 level 在逻辑上是 {SPECIES, GENUS, .... }

的枚举

【讨论】:

  • 不完全是。 Oracle 支持位图连接索引——您在子表上索引父表的属性。它旨在消除星形转换查询中针对星形/雪花模式的 IO。因此,在这种情况下,Oracle 可以针对 Pet 表索引 Species.Genus,因为每个 Pet 最多有一个 Genus。
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 2010-09-14
  • 2012-04-10
  • 1970-01-01
相关资源
最近更新 更多