sql - 将关联表中的几列与 SQL 连接一起使用

标签 sql ruby-on-rails database oop

每当我想避免 NxN 查询时,我都会在 Rails 中使用 includes。但有时包含的表可能有大量字段。

因此,为了避免性能问题,我所做的是,我进行了连接,并从关联表中仅选择了必填字段。

但这根本感觉不对。虽然我不确定是什么,但我感觉像是在违反什么。

我理解当我们做includes时,我们不能指定select子句。我们如何在不进行连接和污染(?)对象的情况下实现这一目标。

最佳答案

没有“好的”rails 方法可以做到这一点。 就像你说的那样,将 includesselect 结合起来是不可能的,也没有用,因为 ActiveRecord::Base 将每个查询包装到一个对象中。这意味着只加载 idname 并省略 descriptionuser_id 会给你带来一个将不完整的对象保存到数据库时,可能会丢失 descriptionuser_id 的内容。

因此您只能使用纯 sql 执行此操作并省去 ActiveRecord 的对象映射,这样您就不会有丢失数据的危险。您还可以通过 ActiveRecord 建立的数据库连接来执行此操作,如下所示:

ActiveRecord::Base.connection.execute("SELECT id,name FROM table_name WHERE <conditions>").each do |row|
  row["id"]  #access id of each result
end

ActiveRecord::Base.connection 包含使用 config/database.yml 中提供的环境访问数据建立的连接句柄,因此您可以使用相同的独立于数据库连接模型。

关于sql - 将关联表中的几列与 SQL 连接一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21550609/

相关文章:

ruby-on-rails - Simple_form : why two input tags are generated instead of one?

database - 无法在Docker外部访问Dockerized数据库

mysql - SQL语法帮助,条件AND

sql - Powershell和SQL:如何将查询的值存储在变量中?

ruby-on-rails - 如何使用 rails generate 命令生成 2 个模型?

ruby-on-rails - Ruby on Rails 3 : link_to create new nested resource?

ios - 将初始对象添加到 Realm

mysql - 在 ubuntu 中授予问题

mysql - SQL:查询按多列分组的不同值的最大数量

sql - '%Query%' 与全文搜索 CONTAINS 查询的性能对比