优化查询PostgreSql-8.4
|
我有如下所示的Rails控制器代码:
@checked_contact_ids = @list.contacts.all(
:conditions => {
\"contacts_lists.contact_id\" => @list.contacts.map(&:id),
\"contacts_lists.is_checked\" => true
}
).map(&:id)
它等效于sql
SELECT *
FROM \"contacts\"
INNER JOIN \"contacts_lists\" ON \"contacts\".id = \"contacts_lists\".contact_id
WHERE (\"contacts_lists\".list_id = 67494 )
上面的查询需要更多的时间来运行,我想以另一种方式以最少的时间运行相同的查询。
有谁知道请注意我还是有可能吗?还是上面的查询足以提供输出?
我正在等待信息...................
没有找到相关结果
已邀请:
1 个回复
森含械
从数据库中拉出一堆对象,然后将大部分工作扔掉以获取ID。 第一步是将
替换为
,但是您仍然会从数据库中取出一堆东西,实例化一堆对象,然后将其与
扔掉,只得到ID号。 您已经知道SQL,所以我很可能会通过List模型(或任何
)上的便捷方法直接使用SQL,如下所示:
然后,在您的控制器中:
如果那还不够快,请在
表上检查索引。 当您完全知道需要什么数据并且很快就需要它时,没有充分的理由不直接使用SQL。只需将SQL隔离在模型内部,就不会有任何问题。