Mysql Laravel联接表和按和分组查询太慢

Mysql Laravel联接表和按和分组查询太慢,mysql,laravel,Mysql,Laravel,我正在使用Laravel查询生成器从数据库中获取所需的结果。下面的查询是否工作正常,但需要花费太多时间才能获得结果。你能帮我做这个吗 选择 `amz_广告和sp_活动`.*, 订单7d的总和(属性监督7d), 订单30d的总和(属性监督30d), 金额(归属销售7d)为销售7d, 金额(归属于销售30D)为销售30D, 将(印象)相加为印象, 按点击次数求和(点击次数), 作为成本的总和(成本), 总和(attributedConversions7d)作为attributedConversion

我正在使用Laravel查询生成器从数据库中获取所需的结果。下面的查询是否工作正常,但需要花费太多时间才能获得结果。你能帮我做这个吗

选择
`amz_广告和sp_活动`.*,
订单7d的总和(属性监督7d),
订单30d的总和(属性监督30d),
金额(归属销售7d)为销售7d,
金额(归属于销售30D)为销售30D,
将(印象)相加为印象,
按点击次数求和(点击次数),
作为成本的总和(成本),
总和(attributedConversions7d)作为attributedConversions7d,
总和(attributedConversions30d)为attributedConversions30d
从…起
`amz_广告_sp_产品_目标`
“amz_ads_sp_product_targetings”上的内部联接“amz_ads_sp_report_product_targetings”。`campaignId`=`amz_ads_sp_report_product_targetings`.`campaignId`
在“amz_ads_sp_report_product_targetings”上内部加入“amz_ads_sp_活动”。“活动ID”=“amz_ads_sp_活动”。“活动ID”
哪里
(
`amz_ads_sp_product_targetings`.`user_id`=?
和'amz_ads_sp_product_targetings'。'profileId`=?
) 
分组
`amz_广告_sp_产品_目标`.`活动ID`
解释SQL的结果


id  select_type table                   type    possible_keys   key     key_len     ref                         rows    Extra   
1   SIMPLE      amz_ads_sp_report_product_targetings    ALL campaignId  NULL        NULL        NULL                            50061   Using temporary; Using filesort
1   SIMPLE      amz_ads_sp_campaigns            ref campaignId  campaignId  8       pr-amz-ppc.amz_ads_sp_report_product_targetings.ca...   1   
1   SIMPLE      amz_ads_sp_product_targetings       ref campaignId  campaignId  8       pr-amz-ppc.amz_ads_sp_report_product_targetings.ca...   33  Using where

您的查询可以从几个索引中受益,这些索引包括
WHERE
子句以及连接条件:

CREATE INDEX idx1 ON amz_ads_sp_product_targetings (
    user_id, profileId, campaignId);

CREATE INDEX idx2 ON amz_ads_sp_report_product_targetings (
    campaignId);

CREATE INDEX idx3 ON amz_ads_sp_campaigns (campaignId);
第一个索引
idx1
覆盖了整个
WHERE
子句,这可能会让MySQL在
amz\u ads\u sp\u product\u targetings
表的初始扫描中丢弃许多记录。它还包括第一次加入所需的
活动ID
列。第二个和第三个索引涵盖每个表的联接列。这可能会让MySQL在加入过程中进行更快速的查找


请注意,除非该表的
活动ID
是主键,否则选择
amz\u ads\u sp\u活动。*
无效。此外,我们也无法做更多的事情来加快查询速度,因为
SUM
从本质上讲,需要触摸每条记录才能得出结果和。

大概您有一个复合键(user\u id,profileId)?