表格包含以下列:user_id
和season_id
哪个更快:
#If I have a database index on user_id
Table.find_all_by_user_id(some_id)
或
#If I have a database index on user_id and season_id
Table.find_all_by_user_id_and_season_id(some_id, another_id)
多列索引总是更快吗?
例如,写一个多列索引更慢?如果是这样,我可以使用单列查询。
PS。该表有大约1.000.000记录并稳步增长!
答案 0 :(得分:1)
索引取决于您需要执行的查询。 以下代码
Table.find_all_by_user_id(some_id)
不添加任何索引。以下是
add_index :table, :column
因此,如果您需要同时使用user_id
和season_id
执行查询,请添加复合索引。否则添加一个简单的索引。
答案 1 :(得分:0)
Table.find_all_by...
与索引无关。无论列是外键还是索引,都会通过rails添加它们。如果您希望数据库对这些列建立索引,则需要在迁移中使用add_index手动添加它们。
你的例子正在完成两件完全不同的事情。一旦找到一列,另一列找到两列,它们将返回不同的结果。
如果你想知道哪个更快,你将不得不做一些基准测试。我建议阅读导轨指南。 http://guides.rubyonrails.org/performance_testing.html