使用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进行搜索?
或者是否有其他理由以这种方式进行索引?
答案 0 :(得分:0)
答案刚好发生在我身上。
某些数据库不支持多字段索引,这些数据库仅索引第一个字段。如果您使用我的备用索引,那么您将获得按类名聚类的数据,数据库必须在该数据库上进行顺序扫描以查找特定ID。这肯定比搜索ID然后检查类名慢。
我发现另一个原因是,当索引中的第一个字段不够具体时,SQL优化器往往不会想出使用索引。显然。