1.问题描述
渠道产品销量报表V2 日表、月报、年表默认查询慢
2. 问题分析及解决方案:
select count() 查询很快,原因是查询了不必要的字段,去掉其他字段,保留第1个字段B.ImageUrl
优化后查询由60秒减少到8秒查询出结果
SELECT Count(1)
FROM (SELECT
B.ImageUrl
--D.OrderSourceName,
--A.SKU
--B.ClientSKU,
--B.ProductGroupSKU,A.OrderSourceSKU,
--Sum(A.SalesNum) SalesNum,
--Sum(A.OrderNum) OrderNum,
--C.WareHouseType,
--B.ProductNameCN,
--Cast(A.SalesYear AS varchar) + RIGHT('00' + Cast(A.SalesMonth AS varchar), 2) DateFormat
FROM RB_Report_OrderSourceSKUMonth A WITH(NOLOCK)
LEFT JOIN RB_Product B WITH(NOLOCK)
ON A.CustomerID = B.CustomerID
AND A.SKU = B.SKU
LEFT JOIN RB_WareHouse C WITH ( NOLOCK )
ON C.ID = A.WareHouseID
AND C.CustomerID = A.CustomerID
LEFT JOIN RB_OrderSource AS D WITH ( NOLOCK )
ON A.OrderSourceID = D.ID
AND A.CustomerID = D.CustomerID
WHERE A.CustomerID = 1
AND A.SalesYear >= 2022
AND A.SalesYear <= 2022
AND A.SalesMonth >= 2
AND A.SalesMonth <= 2
GROUP BY B.ImageUrl,
D.OrderSourceName,
B.ProductGroupSKU,
A.SKU,
B.ClientSKU,
A.OrderSourceSKU,
C.WareHouseType,
B.ProductNameCN,
A.SalesYear,
A.SalesMonth,
A.OrderSourceSKU) AS PagerTable
--410114
--60-->8 秒
3.慢sql
SELECT Count(1)
FROM (SELECT
B.ImageUrl
D.OrderSourceName,
A.SKU
B.ClientSKU,
B.ProductGroupSKU,A.OrderSourceSKU,
Sum(A.SalesNum) SalesNum,
Sum(A.OrderNum) OrderNum,
C.WareHouseType,
B.ProductNameCN,
Cast(A.SalesYear AS varchar) + RIGHT('00' + Cast(A.SalesMonth AS varchar), 2) DateFormat
FROM RB_Report_OrderSourceSKUMonth A WITH(NOLOCK)
LEFT JOIN RB_Product B WITH(NOLOCK)
ON A.CustomerID = B.CustomerID
AND A.SKU = B.SKU
LEFT JOIN RB_WareHouse C WITH ( NOLOCK )
ON C.ID = A.WareHouseID
AND C.CustomerID = A.CustomerID
LEFT JOIN RB_OrderSource AS D WITH ( NOLOCK )
ON A.OrderSourceID = D.ID
AND A.CustomerID = D.CustomerID
WHERE A.CustomerID = 1
AND A.SalesYear >= 2022
AND A.SalesYear <= 2022
AND A.SalesMonth >= 2
AND A.SalesMonth <= 2
GROUP BY B.ImageUrl,
D.OrderSourceName,
B.ProductGroupSKU,
A.SKU,
B.ClientSKU,
A.OrderSourceSKU,
C.WareHouseType,
B.ProductNameCN,
A.SalesYear,
A.SalesMonth,
A.OrderSourceSKU) AS PagerTable
参考解决方案修改