首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效查询好友数量?

问有效查询好友数量?
EN

Stack Overflow用户
提问于 2013-06-11 22:37:14
回答 1查看 77关注 0票数 2

我目前首先获取某个用户的所有好友,然后将数组的大小作为好友的数量。我担心的是,因为每次我从数据库中检索所有朋友的信息时,它可能(或明显)效率低下。所以我想知道是否有一种方法可以在不获取任何其他信息的情况下有效地查询某个用户的好友数量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-11 22:47:20

如果您的关系声明正确,那么您应该能够执行user.friends.count以生成DB级计数。

在我的控制台中,可以看到SQL查询生成的 (Drug has_many :details和DrugDetail belongs_to :drug):

代码语言:javascript
复制
irb(main):003:0> Drug.first.details
  Drug Load (0.7ms)  SELECT "drugs".* FROM "drugs" LIMIT 1
  DrugDetail Load (1.9ms)  SELECT "drug_details".* FROM "drug_details" WHERE "drug_details"."drug_id" = 1771
=> []

irb(main):004:0> Drug.first.details.count
  Drug Load (0.7ms)  SELECT "drugs".* FROM "drugs" LIMIT 1
   (0.6ms)  SELECT COUNT(*) FROM "drug_details" WHERE "drug_details"."drug_id" = 1771
=> 0

irb(main):006:0> Drug.first.details.to_a.size
  Drug Load (2.1ms)  SELECT "drugs".* FROM "drugs" LIMIT 1
  DrugDetail Load (0.5ms)  SELECT "drug_details".* FROM "drug_details" WHERE "drug_details"."drug_id" = 1771
=> 0

在你的例子中是,如果你有这样的关系:

代码语言:javascript
复制
User has_many :friends
Friend belongs_to :user

然后,这应该在DB级执行,并且比您的第一段代码更快:

代码语言:javascript
复制
User.first.friends.count
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17046809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档