我有一個表現較慢的查詢。我知道使用從屬子查詢是不好的,但我想不出另一種獲取我想要的數據的方式。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這應該也適用。 –