1.问题分析
count() 查询,分析发现,不需要left join 查询补齐数据或查询重复的数据
2.解决方案:
去掉left join, 测试从30秒到优化后的2秒查询出结果
关注一下业务:是否需要查询出重复的数据
3.优化后的sql 参考
SELECT Count(0)
FROM [RB_Amazon_Product_Base] (nolock) vtb
--LEFT JOIN RB_StockClearDetailed scd (nolock)
-- ON( vtb.OrderSourceSKUID = scd.ListId
-- AND vtb.CustomerID = scd.CustomerID
-- AND ( clearType = 1
-- OR clearType = 3 ) )
--LEFT JOIN RB_StockClearStrategy scs (nolock)
-- ON( scd.scsID = scs.ID
-- AND scd.CustomerID = scs.CustomerID )
--LEFT JOIN (SELECT Sum(GoodNum) AS Inventory,
-- WareHouseID,
-- SKU,
-- CustomerID
-- FROM RB_WareHouse_Product (nolock)
-- GROUP BY WareHouseID,
-- SKU,
-- CustomerID) AS tbWHN
-- ON( vtb.WID = tbWHN.WareHouseID
-- AND vtb.SKU = tbWHN.SKU
-- AND vtb.CustomerID = tbWHN.CustomerID )
--LEFT JOIN RB_WareHouse w (nolock)
-- ON w.CustomerID = vtb.CustomerID
-- AND w.ID = vtb.DefaultWarehouseID
--LEFT JOIN RB_OrderSource o (nolock)
-- ON vtb.CustomerID = o.CustomerID
-- AND vtb.OrderSourceID = o.ID
--LEFT JOIN RB_Product_Admin pa(nolock)
-- ON vtb.CustomerID = pa.CustomerID
-- AND vtb.SKU = pa.SKU
--LEFT JOIN RB_Product p (nolock)
-- ON p.CustomerID = vtb.CustomerID
-- AND vtb.SKU = p.SKU
--LEFT JOIN RB_WareHouse wh(nolock)
-- ON wh.CustomerID = p.CustomerID
-- AND wh.ID = p.DefaultLocalWarehouse
--LEFT JOIN RB_WareHouse swh(nolock)
-- ON swh.CustomerID = vtb.CustomerID
-- AND swh.ID = vtb.TheWareHouseID
--LEFT JOIN RB_Amazon_NotToFbaReason ntf (nolock)
-- ON vtb.CustomerID = ntf.CustomerID
-- AND vtb.NotToFbaReasonId = ntf.ID
WHERE vtb.CustomerID = 1
AND vtb.IsDelete = 0
AND IsOffShelf = 0
AND vtb.OrderSourceSKUID > 0
OPTION(maxdop 6)
同:bug 28923 【Amzon Listing管理】在线页面,点击搜索报错超时,若修改,更新一下这里的状态