智能刊登gaussdb 慢sql top 10
2.解决方案
按 CustomerId, MarketId, StrategyId 创建组合索引, 提供查询速度
语句优化建议:
- 发现IN表达式包含元素超过10,请慎用,因为元素过多会导致全表扫描。
- 发现未使用`ORDER BY`的`GROUP BY`查询`GROUP BY CustomerId,MarketId,StrategyId`,该用法会导致无谓的排序产生,如果不需要排序建议添加`ORDER BY NULL`。
3.原sql
SELECT CustomerId, MarketId, StrategyId, COUNT(1) AS LastTotals, SUM(CASE `Status` WHEN 'success' THEN 1 ELSE 0 END) AS LastSuccesses
, SUM(CASE `Status` WHEN 'failure' THEN 1 ELSE 0 END) AS LastFails, SUM(CASE WHEN Date = 20220801
AND Status = 'pending' THEN 1 ELSE 0 END) AS LastPendings, SUM(CASE WHEN Date = 20220801
AND Status = 'normal' THEN 1 ELSE 0 END) AS LastNormals
FROM Ap_AutoPublish_Ebay_Queue
WHERE CustomerId = 1
AND MarketId = 2
AND StrategyId IN (47665, 47664, 47663, 47662, 47661, 47660, 47463, 46759, 46758, 46757, 46756, 46755, 46754, 46436)
AND Date BETWEEN 20220726 AND 20220801
GROUP BY CustomerId, MarketId, StrategyId