我有几张桌子,每张桌子都有数百万条记录。其中一个表有一个潜在客户数据(点击表中的click_id字段)。第二次(点击)将click_id作为主键,并具有ad_id字段(广告标签)。看起来像:
ID
lead_id
lead_click_id
another_fields
click_id
ad_id
another_fields
我需要获取带有潜在客户数量的数据以及我需要的ad_id标签
我有一个类似的查询:
SELECT
今天,一个查询可以工作10秒或更长时间。 C
.ad_id
AS lead_ad_id
, COUNT(DISTINCT L.lead_id) AS leads
FROM X_leads
AS L
INNER JOIN X_click
AS C
ON L.lead_click_id=C.click_id
WHERE (C.shop_id=223) AND (L.owner_id=223)
AND (L.lead_active=1) AND (L.lead_invalid=0)
AND (C.ad_id IN (11, 180, 181, ... {it can be hundred of ids}...))
GROUP BY L
.lead_ad_id
我试图自己优化它,但没有任何结果。
解释结果:
如何优化此查询?
感谢
答案 0 :(得分:0)
使用explain_plan并避免全表扫描,以避免它使用您在where条件中使用的字段强制索引。 http://dev.mysql.com/doc/refman/5.1/en/index-hints.html