在处理亚马逊队列提交定时服务时,发现查询需要提交的店铺有一部分是不需要提交的,但是也取出来取提交了,这样会导致浪费资源,也会导致其他需要提交的店铺数据无法及时提交。
重现步骤
在处理亚马逊队列提交定时服务时,发现查询需要提交的店铺有一部分是不需要提交的,但是也取出来取提交了,这样会导致浪费资源,也会导致其他需要提交的店铺数据无法及时提交。
| 所属项目 | 技术中心-需求池 |
|---|---|
| 所属模块 | 供应链 产品采购 产品库 |
| 所属迭代 | 技术研发中心 3月第1版本(2023年) |
| Bug类型 | 性能问题 |
| 严重程度 | 提示 |
| 优先级 | P2 |
| Bug状态 | 已关闭 |
| 业务部门 | |
| 开发责任人 | |
| 测试责任人 | |
| 解决时效 | 0 |
| 激活次数 | 0 |
| 激活日期 | |
| 当前指派 | Closed 于 2023-03-16 10:46:14 |
| 截止日期 | 2023-03-16 |
| 上线时间 | |
| 上线时效 | |
| 关键词 | |
| 抄送给 | 王翔宇 |
| 所属迭代 | 技术研发中心 3月第1版本(2023年) |
|---|---|
| 相关需求 | |
| 相关任务 |
| 由谁创建 | 冯名明 于 2023-03-16 10:33:56 |
|---|---|
| 影响环境 |
658 |
| 由谁解决 | 冯名明 于 2023-03-16 10:34:20 |
| 解决版本 | 三月主干 |
| 解决方案 | 性能问题 |
| 由谁关闭 | 关依林 于 2023-03-16 10:46:14 |
| 最后修改 | 刘超 于 2023-11-17 09:55:44 |
| 相关Bug |
|---|
解决方案:把队列获结果表关联队列产品表,这样只有有需要提交队列数据的店铺才会被查询出来,过滤一些无效店铺数据
原SQL:
DROP TABLE IF EXISTS #tmpV2;
SELECT pub.CustomerID,
pub.OrderSourceID
INTO #tmpV2
FROM RB_AmazonUploadResult_V2 pub WITH (NOLOCK)
WHERE pub.CustomerID = 1
AND pub.Status = 0
AND pub.TranslateStatus < 2
AND ISNULL(pub.UploadType, 1) NOT IN ( 7, 8, 12 )
AND pub.AddUserName <> '修复价格'
GROUP BY pub.CustomerID,
pub.OrderSourceID;
CREATE INDEX idx_OrderSourceID_CustomerID
ON #tmpV2 (
OrderSourceID,
CustomerID
);
SELECT t.CustomerID,
os.ID OrderSourceID,
os.OrderSourceName,
os.OrderSourceCountry,
API.DevIDSellerId,
API.AppIDMarketplaceId,
API.CertIDAccessKeyId,
API.ServerUrl,
API.UserTokenSecretAccessKey,
API.MerchantToken,
API.EUBAPIPassword
FROM #tmpV2 t
LEFT JOIN dbo.RB_OrderSource os WITH (NOLOCK)
ON t.CustomerID = os.CustomerID
AND t.OrderSourceID = os.ID
LEFT JOIN RB_OrderSource_EbayAmazonAPI API WITH (NOLOCK)
ON os.CustomerID = API.CustomerID
AND os.ID = API.OrderSourceID;
DROP TABLE IF EXISTS #tmpV2;
优化后的SQL:
DROP TABLE IF EXISTS #tmpV2;
SELECT pub.CustomerID,
pub.OrderSourceID
INTO #tmpV2
FROM RB_AmazonUploadResult_V2 pub WITH (NOLOCK)
INNER JOIN RB_AmazonUploadProduct_V2 rb WITH (NOLOCK)
ON pub.ID = rb.QueueID
WHERE pub.CustomerID = 1
AND pub.Status = 0
AND pub.TranslateStatus < 2
AND ISNULL(pub.UploadType, 1) NOT IN ( 7, 8, 12 )
AND pub.AddUserName <> '修复价格'
GROUP BY pub.CustomerID,
pub.OrderSourceID;
CREATE INDEX idx_OrderSourceID_CustomerID
ON #tmpV2 (
OrderSourceID,
CustomerID
);
SELECT t.CustomerID,
os.ID OrderSourceID,
os.OrderSourceName,
os.OrderSourceCountry,
API.DevIDSellerId,
API.AppIDMarketplaceId,
API.CertIDAccessKeyId,
API.ServerUrl,
API.UserTokenSecretAccessKey,
API.MerchantToken,
API.EUBAPIPassword
FROM #tmpV2 t
LEFT JOIN dbo.RB_OrderSource os WITH (NOLOCK)
ON t.CustomerID = os.CustomerID
AND t.OrderSourceID = os.ID
LEFT JOIN RB_OrderSource_EbayAmazonAPI API WITH (NOLOCK)
ON os.CustomerID = API.CustomerID
AND os.ID = API.OrderSourceID;
DROP TABLE IF EXISTS #tmpV2;