2011-04-18 122 views
0

我有以下查询找出计数总数。优化查询


SELECT count(*) 
    FROM contacts_lists 
    JOIN plain_contacts 
    ON contacts_lists.contact_id = plain_contacts.contact_id 
    JOIN contacts 
    ON contacts.id = plain_contacts.contact_id 
    WHERE plain_contacts.has_email 
    AND NOT contacts.email_bad 
    AND NOT contacts.email_unsub 
    AND contacts_lists.list_id = 45897 

它需要150毫秒才能完成其任务。 是否有任何其他方式来运行上述查询? 有什么办法可以缩短时间吗?可能吗?请告诉我.....................................

+0

你有索引外键字段(各种'contact_id')?你有'contacts_lists.list_id'字段的索引吗? – 2011-04-18 08:53:14

回答

1

您是否创建了索引(add_index在迁移中)在您的contact_id列上?此外,它可能会更好使用

JOIN contacts ON contacts.id = contacts_lists.contact_id 
# instead of: JOIN contacts ON contacts.id = plain_contacts.contact_id