任务描述
1. 问题分析

  智能刊登gaussdb 慢sql  top 10

  分析诊断后提示,缺少索引:导致全表扫描


索引优化建议:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_aliexpress_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_allegro_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_allegro_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_lazada_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_lazada_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_wish_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_wish_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_ebay_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_ebay_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_amazon_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_amazon_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_mercadolibre_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_mercadolibre_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_kogan_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_kogan_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_shopeev2_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_shopeev2_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.ap_autopublish_cdiscount_queue 的 Status,CustomerId,Time 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`ap_autopublish_cdiscount_queue` ADD INDEX `idx_Status_CustomerId_Time` (`Status`, `CustomerId`, `Time`)
建议在数据表 irobotbox_marketpublish.sys_ordersource 的 OrderSourceId,OrderSourceName 列上添加如下索引,以提高查询性能:
ALTER TABLE `irobotbox_marketpublish`.`sys_ordersource` ADD INDEX `idx_OrderSourceId_OrderSourceName` (`OrderSourceId`, `OrderSourceName`)
注意:在业务高峰期,变更表结构存在风险,请谨慎操作!


2.解决方案

已在中午12:00-14:00业务空闲时段添加索引

3.原sql

SELECT DISTINCT a.StrategyId, a.Id, b.`Name`, a.Sku, a.SiteCode
, a.OrderSourceId, c.OrderSourceName, a.SellerSku, a.FailureReason, a.Time
FROM (
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_aliexpress_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_allegro_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_amazon_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_cdiscount_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_ebay_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_jdid_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_joom_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_jumia_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_kogan_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_lazada_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_mercadolibre_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_newegg_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_realde_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_shopeev2_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_tophatter_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_vova_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_walmart_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_wayfair_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
UNION ALL
SELECT StrategyId, MarketId, Id, Sku, SiteCode
, OrderSourceId, SellerSku, FailureReason, TIME
FROM ap_autopublish_wish_queue
WHERE TIME > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND TIME < CURDATE()
AND `Status` = 'failure'
AND customerid = 1
) a
LEFT JOIN sys_market b ON a.MarketId = b.MarketId
LEFT JOIN sys_ordersource c ON a.OrderSourceId = c.OrderSourceId
WHERE a.Time >= DATE_ADD(CURDATE(), INTERVAL -1 DAY)
AND a.Time < CURDATE()
ORDER BY a.Time DESC
历史记录  
  1. 2022-08-01 09:45:33, 由 陈少军 创建。
  2. 2022-08-01 09:45:55, 由 陈少军 指派给 陈少军。
    修改了 预计剩余,旧值为 "0",新值为 "2"。
    参考解决方案 优化
  3. 2022-08-01 12:07:43, 由 陈少军 完成。
    修改了 总计消耗,旧值为 "0",新值为 "1"。
    修改了 实际完成,旧值为 "",新值为 "2022-08-01 12:06:52"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-08-01 12:07:43"。
    修改了 预计剩余,旧值为 "2",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "chenshaojun"。

    中午已创建完成这些索引

    慢sql top 10 诊断里的其他索引也已创建

  4. 2023-10-31 14:53:13, 由 周杰 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "chenshaojun",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "zhoujie"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2023-10-31 14:53:13"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 系统管理部 - 系统服务优化
所属模块 /
相关需求 暂无
指派给 Closed 于 2023-10-31 14:53:13
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给 胡笑锋
由谁创建 陈少军 于 2022-08-01 09:45:32
由谁完成 陈少军 于 2022-08-01 12:06:52
由谁取消 暂无
由谁关闭 周杰 于 2023-10-31 14:53:13
关闭原因 已完成
最后编辑 周杰 于 2023-10-31 14:53:13
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 1工时
预计剩余 0工时
预计开始 2022-08-01
实际开始 2022-08-01
截止日期 2022-08-01