如果我认为我的应用程序运行的查询保证它们,在 Rails 4 应用程序(使用 Postgresql)中设置这样的索引是否被认为是好的?只是检查一下,因为我不是索引专家,而且我不想意外导致性能问题。下面的例子应该是一个连接表。谢谢!
add_index "foo_bars", ["foo_id", "bar_id"]
add_index "foo_bars", "foo_id"
add_index "foo_bars", "bar_id"
最佳答案
您可能只需要两个索引。您通常使用两列进行查询吗?如果是这样,请执行以下操作:
add_index "foo_bars", ["foo_id", "bar_id"]
add_index "foo_bars", ["bar_id", "foo_id"]
有了这两个,无论您查询的是哪一列,您的数据库都应该找到合适的索引。它可能不会节省任何空间,但这意味着您的数据库只需要在数据更改时更新两个索引(并不是说您可能会注意到速度差异)。
但是,我敢打赌您的查询通常只包括 foo_id
或 bar_id
(不是两者),因为您可能只是遍历 has_many
大多数时候是关系。如果是这种情况,只需在各个列上定义索引即可。 PostgreSQL 足够智能,可以在您查询两列时合并索引。
add_index "foo_bars", "foo_id"
add_index "foo_bars", "bar_id"
关于ruby-on-rails - Rails 数据库索引 : Is this an anti-pattern?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151210/