1.问题分析
慢sql,分析发现缺少索引
2.解决方案
按提示在业务低峰 创建索引
索引优化建议:
- 建议在数据表 irobotbox_marketpublish.P_Product 的 State,RiskInfringement,CustomerId,FinalJudgmentTime 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`P_Product` ADD INDEX `idx_State_RiskInfringement_CustomerId_FinalJudgmentTime` (`State`, `RiskInfringement`, `CustomerId`, `FinalJudgmentTime`)
注意:在业务高峰期,变更表结构存在风险,请谨慎操作!
3.慢sql
SELECT s.*
FROM (SELECT `CustomerId` AS `CustomerId`, `Sku` AS `Sku`, `RealSku` AS `RealSku`
FROM `P_Product`
WHERE `CustomerId` = 1
AND `FinalJudgmentTime` <= timestamp('2023-04-27 07:40:55.890925')
AND `FinalJudgmentTime` >= timestamp('2023-03-28 07:40:55.890924')
AND `State` IN (0, 1, 5)
AND `RiskInfringement` IN (1)
AND `PackageLength` <= 60.00
AND `PackageWidth` <= 60.00
AND `PackageHeight` <= 60.00
AND `PackageLength` + `PackageWidth` + `PackageHeight` <= 90.00
) p
INNER JOIN (SELECT *
FROM `M_Ebay_Listing`
WHERE `Id` > 2803518970
AND `CustomerId` = 1
AND NOT (`Sku` IS NULL
OR `Sku` = '')
AND `OrderSourceId` IN (7746)
AND `PublishTime` >= timestamp('2023-03-26 00:00:00')
AND `PublishTime` <= timestamp('2023-04-05 00:00:00')
AND `OnlineStatus` IN (1)
AND 'Germany' = `SiteCode`
AND `IsAutoPublish` = 1
AND 'CN' = `Country`
) s ON `p`.`CustomerId` = `s`.`CustomerId`
AND `p`.`Sku` = `s`.`Sku`
ORDER BY `s`.`Id` ASC
LIMIT 0, 100