Rails acts_as_audited - 为什么它首先按ID索引?

时间:2011-02-04 17:42:19

标签: ruby-on-rails polymorphic-associations

使用Rails 2.3.5。

在acts_as_audited中,模式定义定义了一个索引:

  

add_index:审核,[:auditable_id,   :auditable_type],:name =>   'auditable_index'

在我看来,索引应该是:

  

add_index:审核,[:auditable_type,   :auditable_id],:name =>   'auditable_index'

一般来说,在多态关联中,我们有时可能只想按类型进行搜索,但几乎没有按类型搜索ID?

或者,当您仅使用插件审核一个表时,这是否允许通过auditable_id进行搜索?

或者是否有其他理由以这种方式进行索引?

1 个答案:

答案 0 :(得分:0)

答案刚好发生在我身上。

某些数据库不支持多字段索引,这些数据库仅索引第一个字段。如果您使用我的备用索引,那么您将获得按类名聚类的数据,数据库必须在该数据库上进行顺序扫描以查找特定ID。这肯定比搜索ID然后检查类名慢。

我发现另一个原因是,当索引中的第一个字段不够具体时,SQL优化器往往不会想出使用索引。显然。