我有一个表现较慢的查询。我知道使用从属子查询是不好的,但我想不出另一种获取我想要的数据的方式。MySQL需要查询优化
基本上,我想标记过去6个月至少有50张发票的客户,但本月没有发票。
这是我目前:
select
Customer.name,
Customer.id,
Customer.latitude,
Customer.longitude
from
Customer
where
EXISTS (
SELECT
*
FROM
Invoice_Header
WHERE
Invoice_Header.inv_date BETWEEN '2011-03-02' AND '2011-10-02'
AND
Invoice_Header.account_number = Customer.account_number
HAVING COUNT(invoice_num) > 50
)
AND NOT EXISTS (
SELECT *
FROM
Invoice_Header
WHERE
InvHead.inv_date > '2011-10-02'
AND
InvHead.account_number = Customer.account_number
)
Group by name;
客户表中有大约12K的记录,Invoice_Header有大约2mill记录。
我有inv_date,account_number(在这两个表中)的索引。
任何建议如何加快这一点,将不胜感激。
+1这应该也适用。 –