在多标准查询上编制索引

时间:2011-02-20 03:55:58

标签: ruby-on-rails ruby-on-rails-3 indexing

我的Rails数据库中有一个has_many, :through关系,:through表包含以下重要字段:

Assignment.rb (subset)
company_id
project_id
importance
order

所有这些列都被整个系统中的查询大量使用。根据具体情况,这些查询最多可查找其中4个字段并采用不同的组合。

我有这些索引:

company_id
project_id

我是否需要为我使用的每个特定组合添加新索引,从而导致潜在的大量索引,或者为了获得最佳性能,我可以添加:

company_id, project_id, importance, order

并且系统只会搜索它给出的任何组合?

1 个答案:

答案 0 :(得分:0)

假设您正在使用MySQL,如果您在(company_id,project_id,importance,order)上创建索引,则意味着您可以使用该索引来利用该索引:

  • COMPANY_ID
  • company_id和project_id
  • company_id和project_id以及重要性
  • company_id和project_id以及重要性和顺序

但是您不能自己索引project_id或重要性或订单。希望这可以帮助您创建索引。如果您有依赖项,则为其创建索引。例如,如果您在涉及重要性时始终搜索订单,请创建(重要性,订单)索引。请记住,索引将在单独使用时被利用,因此如果您有以下索引:(company_id),(project_id),(重要性),(顺序),您可以在通过company_id和project_id搜索时利用它们示例