【问题标题】:Efficiency of querying a database with STI使用 STI 查询数据库的效率
【发布时间】:2013-04-05 14:50:14
【问题描述】:

我很好奇 rails 如何查询使用 STI 的表。例如,如果我的父类是 Book 并且我有两个子类 ComicBookNovel 如果我做类似的事情

Novel.all.each

因为只有一张桌子,服务器是否也切换所有漫画书?是否会自动添加适当的索引来防止这种情况发生?谢谢

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-3 indexing single-table-inheritance


    【解决方案1】:

    好吧,你不能这样做 Novel.eacheach 没有在模型类上定义。但是,您可以执行Novel.all.each ...,其中... 是一些块。

    至于查询的工作原理,只需在任何 ARel 表达式上调用 to_sqlNovel.all 将返回模型集合本身,因此您需要进一步确保通过调用 scoped 返回有效的 ARel 表达式。

    [1] pry(main)> Novel.scoped.to_sql
    => "SELECT \"books\".* FROM \"books\" WHERE \"books\".\"type\" IN ('Novel')"
    

    对大多数经常查询的列进行索引是一件值得考虑的好事情。是的,如果没有索引,您的 rdbms 将不得不查看表中的所有记录作为上述条件检查的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多