Mysql 具有大量记录的查询优化
我有几个表,每个表中有数百万条记录。其中一个表具有leads数据(带有clicks表中的click_id字段)。第二个(单击)将click_id作为主键,并具有ad_id字段(广告标签)。它看起来像: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
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
作为LX\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列。我无法显示完整架构-它有很多表。