慢sql top 10,缺少索引
2.解决方案: 在晚上业务使用量少的时候创建
索引优化建议:
建议在数据表 irobotbox_amazonphoenix.apx_basicplan_logdetail 的 PlanType,CustomerId,CreationTime 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_amazonphoenix`.`apx_basicplan_logdetail` ADD INDEX `idx_PlanType_CustomerId_CreationTime` (`PlanType`, `CustomerId`, `CreationTime`)
注意:在业务高峰期,变更表结构存在风险,请谨慎操作!
索引优化建议:
建议在数据表 irobotbox_amazonphoenix.Apx_BasicPlan_LogDetail 的 PlanId,CustomerId,CreationTime 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_amazonphoenix`.`Apx_BasicPlan_LogDetail` ADD INDEX `idx_PlanId_CustomerId_CreationTime` (`PlanId`, `CustomerId`, `CreationTime`)
注意:在业务高峰期,变更表结构存在风险,请谨慎操作!
3.SQL
SELECT 1 AS 平台编号, CASE a.PlanType WHEN 1 THEN 'amazon-自动下架' WHEN 2 THEN 'amazon-自动调价' WHEN 3 THEN 'amazon-自动促销' WHEN 4 THEN 'amazon-重新刊登' ELSE 'amazon-未知' END AS 平台, COUNT(CASE WHEN `Status` = 5 THEN 1 ELSE NULL END) AS 执行成功数, COUNT(CASE WHEN `Status` < 5 THEN 1 ELSE NULL END) AS 刊登中, COUNT(Id) AS 实际执行总数 , COUNT(CASE WHEN `Status` = 5 THEN 1 ELSE NULL END) / COUNT(Id) AS 成功率 FROM apx_basicplan_logdetail a WHERE a.CustomerId = 1 AND a.CreationTime >= date_add(CURDATE(), INTERVAL -1 DAY) AND a.CreationTime < CURDATE() AND a.PlanType IN (1, 4) GROUP BY a.PlanType