1.问题分析
智能刊登 gaussdb 慢sql top 10,缺少索引,每天2000多次
2.解决方案
诊断成功
索引优化建议:
- 建议在数据表 irobotbox_marketpublish.P_Product_ProhibitionSaleMarket 的 Sku,CustomerId,SiteCodes,MarketId 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`P_Product_ProhibitionSaleMarket` ADD INDEX `idx_Sku_CustomerId_SiteCodes_MarketId` (`Sku`, `CustomerId`, `SiteCodes`, `MarketId`)
- 建议在数据表 irobotbox_marketpublish.Ap_AutoPublish_Ebay_AllSku 的 StrategyId,OrderSourceId,SiteCode,CustomerId,MarketId 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`Ap_AutoPublish_Ebay_AllSku` ADD INDEX `idx_StrategyId_OrderSourceId_SiteCode_CustomerId_MarketId` (`StrategyId`, `OrderSourceId`, `SiteCode`, `CustomerId`, `MarketId`)
注意:在业务高峰期,变更表结构存在风险,请谨慎操作!
语句优化建议:
- 条件中包含表达式或函数,查询会使用到临时表,将带来较差的性能。
- 发现IN表达式包含元素超过10,请慎用,因为元素过多会导致全表扫描。
- 使用`IS NULL`或`IS NOT NULL`将可能导致引擎放弃使用索引而进行全表扫描。
- 发现未使用`ORDER BY`的`LIMIT`查询`limit 0, 20000`,该用法会因查询执行计划不同而导致非确定性的结果。
- 最外层Select未指定Where条件,可能返回比预期更多的行。