【问题标题】:Rails/Indexes performance Q - which is faster?Rails/Indexes 性能 Q - 哪个更快?
【发布时间】:2010-10-17 16:13:20
【问题描述】:

表有列: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)

多列索引总是更快吗?
例如,编写多列索引是否较慢?如果是这样,我可以使用单列查询。

附言。该表有大约 1.000.000 条记录,并且还在稳步增长!

【问题讨论】:

    标签: mysql ruby-on-rails indexing


    【解决方案1】:

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

    Table.find_all_by_user_id(some_id)
    

    不添加任何索引。以下是

    add_index :table, :column
    

    因此,如果您需要同时使用user_id 和season_id 执行查询,请添加复合索引。否则添加一个简单的索引。

    【讨论】:

      【解决方案2】:

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

      您的示例正在做两件完全不同的事情。一次是按一列查找,一次是按两列查找,它们会返回不同的结果。

      如果您想知道哪个更快,则必须进行一些基准测试。我建议为此阅读 rails 指南。 http://guides.rubyonrails.org/performance_testing.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 2012-08-31
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 2022-06-14
        • 2020-01-25
        相关资源
        最近更新 更多