ruby-on-rails - Rails 数据库索引 : Is this an anti-pattern?

标签 ruby-on-rails database postgresql indexing

如果我认为我的应用程序运行的查询保证它们,在 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_idbar_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/

相关文章:

javascript - 如何更新 Rails 中 Ajax 删除的记录?

php - 在 PHP 中按组名回显用户

c - PostgreSQL 数组结构

javascript - Postgres/Sequelize - 有条件地在查询中附加子句

sql - 计算销售值(value)的 10% 回扣

ruby-on-rails - Rspec respond_to xls

ruby-on-rails - 高负载下薄悬挂

database - 不同数据库的信息

一列上的 SQL 百分比

javascript - 如何缩小并连接一个充满 JavaScript 文件的目录?