2010-10-17 55 views
0

表中的列:user_idseason_id
这是更快:Rails /索引性能Q - 哪个更快?

#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

Table.find_all_by...与索引无关。无论列是外键还是编制索引,这些都是通过导轨添加的。如果您希望这些列由数据库建立索引,则需要在迁移中使用add_index手动添加它们。

你的例子正在做两件完全不同的事情。一旦发现一列,另一列发现两列,他们将返回不同的结果。

如果你想知道哪个更快,你将不得不做一些基准测试。我建议阅读导轨指南。 http://guides.rubyonrails.org/performance_testing.html

1

该索引取决于您需要执行的查询。 以下代码

Table.find_all_by_user_id(some_id) 

不添加任何索引。下面确实

add_index :table, :column 

所以,如果你需要执行同时使用user_idseason_id查询,然后添加一个综合指数。否则添加一个简单的索引。

+0

你误会了我:)看看我的编辑。 – Frexuz 2010-10-17 16:33:59