Ruby on rails 如何在简单的单表查询中减少select命令。轨道

Ruby on rails 如何在简单的单表查询中减少select命令。轨道,ruby-on-rails,Ruby On Rails,我在一个循环中触发以下查询,以从名为'cup'的表中获取id,where子句中的条件很少,现在我的问题是。。它触发了数以十万计的select查询 cup_ids = Cup.where(deleted: false, temporary: false, archived: false, website_id: website.id, junior_report: true).select(:id) 您可以使用map来获取id 您可以使用map来获取id 您可以使用: 您可以使用: 你是什么意

我在一个循环中触发以下查询,以从名为'cup'的表中获取id,where子句中的条件很少,现在我的问题是。。它触发了数以十万计的select查询

 cup_ids = Cup.where(deleted: false, temporary: false, archived: false, website_id: website.id, junior_report: true).select(:id)
您可以使用map来获取id

您可以使用map来获取id

您可以使用:

您可以使用:


你是什么意思?我想更改查询,以便通过select命令减少时间消耗。。。。。就像在那里加载一样,我们至少需要两个表,这里是一个表,有没有任何方法可以将触发的select查询简化为DBQUERY?您是在循环中调用此查询还是什么?是的,它在循环中。上面的查询只生成一个select语句。这就是“select cup.id from cup where cup.deleted=false,cup.temporary:false……”由于循环运行的时间太长,所以查询结果太多了。您的意思是什么?我想更改查询,以便通过select命令减少时间消耗。。。。。就像在那里加载一样,我们至少需要两个表,这里是一个表,有没有任何方法可以将触发的select查询简化为DBQUERY?您是在循环中调用此查询还是什么?是的,它在循环中。上面的查询只生成一个select语句。即“从cup中选择cup.id,其中cup.deleted=false,cup.temporary:false……”查询结果太多,因为循环运行了那么长时间。这是不推荐的,因为where子句会筛选出所有行,选择所有列,然后使用
map
仅获取id。因为pr变量名cup\u id只会相应地获取。我已回答,这是不推荐的,因为where子句筛选出的所有行选择所有列,然后使用
map
仅获取id。由于pr变量名cup\u id仅被相应地获取,因此我已回答谢谢当前我的查询如下cup\u id=cup.where(删除:false,临时:false,存档:false,website\u id:website.id,junior\u report:true)where.not(id:nil)pull(:id)谢谢你现在我的查询就像这个cup\u id=cup.where(删除:false,临时:false,存档:false,website\u id:website.id,junior\u report:true)。where.not(id:nil)。pull(:id)
 cup_ids = Cup.where(deleted: false, temporary: false, archived: false, website_id: website.id, junior_report: true).map(&:id)
cup_ids = Cup.where(deleted: false, temporary: false, archived: false, website_id: website.id, junior_report: true).pluck(:id)