我有一个没有使用索引的活动记录查询,导致应用超时。
domain.services.where.not(parent_service_id: nil).group('services.type').select('services.type, count(services.id) as user_count')
=> [#<ServiceModel id: nil, type: "ServiceModelName">]
我有一个自定义sql命令,强制使用parent_service_id上的索引
ActiveRecord::Base.connection.execute("SELECT services.type, count(services.id) as user_count FROM services where domain_id = 21227 AND parent_service_id IS NOT NULL GROUP BY services.type")
=> {"type"=>"ServiceModelName", "user_count"=>"2810"}
快速返回我需要的信息。但是,它返回哈希而不是模型。如何构建一个activerecord对象,以便我的方法可以返回类似的结果?
答案 0 :(得分:0)
而不是connection.execute
,您应该能够做到:
ServiceModel.find_by_sql(sql)