Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails充当受审核的角色-为什么它首先按ID进行索引?_Ruby On Rails_Polymorphic Associations - Fatal编程技术网

Ruby on rails Rails充当受审核的角色-为什么它首先按ID进行索引?

Ruby on rails Rails充当受审核的角色-为什么它首先按ID进行索引?,ruby-on-rails,polymorphic-associations,Ruby On Rails,Polymorphic Associations,使用Rails 2.3.5 在acts_as_audited中,模式定义定义了一个索引: 添加索引:audits,[:auditable\u id, :auditable_type],:name=> “可审计索引” 在我看来,指数应该是: 添加索引:审核,[:可审核类型, :auditable_id],:name=> “可审计索引” 一般来说,在多态关联中,我们有时可能只想按类型进行搜索,但很少按没有类型的ID进行搜索 或者,当您仅使用插件审核一个表时,这是允许通过可审核的_id进行搜索的一种懒

使用Rails 2.3.5

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

添加索引:audits,[:auditable\u id, :auditable_type],:name=> “可审计索引”

在我看来,指数应该是:

添加索引:审核,[:可审核类型, :auditable_id],:name=> “可审计索引”

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

或者,当您仅使用插件审核一个表时,这是允许通过可审核的_id进行搜索的一种懒惰方式吗


还是有其他的理由这样做呢?

我刚刚想到了答案

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

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