我试图弄清楚某些类型的文章的数量。我有一个非常低效的查询:
Article.where(status: 'Finished').select{|x| x.tags & Article::EXPERT_TAGS}.size
在我追求成为一个更好的程序员的过程中,我想知道如何使它成为一个更快的查询。tags
是 中的一个字符串数组Article
,Article::EXPERT_TAGS
是另一个字符串数组。我想找到数组的交集,并得到结果记录数。
编辑:Article::EXPERT_TAGS
并被article.tags
定义为 Mongo 数组。这些数组包含字符串,我相信它们是序列化的字符串。例如:Article.first.tags = ["Guest Writer", "News Article", "Press Release"]
。不幸的是,这没有正确设置为单独的标签表。
第二次编辑:我使用的是 MongoDB,所以实际上它使用的是 MongoWrapper,如 MongoMapper 或 mongoid,而不是 ActiveRecord。这是我的一个错误,对不起!由于这个错误,它搞砸了对这个问题的分析。感谢 PinnyM 指出错误!