Mysql 具有大量记录的查询优化

Mysql 具有大量记录的查询优化,mysql,sql,optimization,group-by,Mysql,Sql,Optimization,Group By,我有几个表,每个表中有数百万条记录。其中一个表具有leads数据(带有clicks表中的click_id字段)。第二个(单击)将click_id作为主键,并具有ad_id字段(广告标签)。它看起来像: X_线索 id 潜在客户id lead\u click\u id 另一个领域 点击 单击\u id 广告标识 另一个领域 我需要获取有关潜在客户数量和所需ad_id标签的数据。 我有一个类似这样的问题: 选择Cad\u id作为lead\u id,将(不同的L.lead\u id)作为l

我有几个表,每个表中有数百万条记录。其中一个表具有leads数据(带有clicks表中的click_id字段)。第二个(单击)将click_id作为主键,并具有ad_id字段(广告标签)。它看起来像:

X_线索 id
潜在客户id
lead\u click\u id
另一个领域

点击 单击\u id
广告标识
另一个领域

我需要获取有关潜在客户数量和所需ad_id标签的数据。
我有一个类似这样的问题:

选择
C
ad\u id
作为
lead\u id
,将(不同的L.lead\u id)作为
leads

X\u leads
作为
L
X\u点击
C
在L.lead\u点击id=C.点击id
其中(C.shop\u id=223)和(L.owner\u=L.owner\u激活(L.lead_invalid=0)和(C.ad_id IN(11,180,181,{可以是一百个id}…)
L
分组
如今,一个查询可以工作10秒或更长时间。
我试图自己优化它,但没有任何结果。

解释结果:



如何优化此查询?

感谢您使用explain\u计划并避免全表扫描,以避免强制索引您在where条件中使用的字段。

通过提供适当的DDL和解释
子句中的大型
是用于什么的?是否可以用
JOIN
替换它?您的查询中有不在架构中的列。提供完整架构,包括索引。在中有广告标签的ID。用户可以单击复选框选择它。(可以是1或200)@正如我在中所说的,MarcusAdams有一个广告标签的id,可以在表单中选择用户。我们不能将其替换为X_click表中的JOIN.ad_id列。我无法显示完整架构-它有很多表。