对大表做count查询,使用了函数,不走索引
将函数改为等量的条件查询,走索引提高查询速度
测试查询速度从154秒到优化后的16秒
2.解决方案:
去掉:
--AND Datediff(day, '2022-04-15', a.AddTime) >= 0
--AND Datediff(day, '2022-04-21', a.AddTime) <= 0
改为:
and a.AddTime >='2022-04-15' and a.AddTime <='2022-04-21'
优化后的sql:
SELECT Count(0)
FROM RB_Amazon_OnlinePrice_Log a (nolock)
INNER JOIN RB_Amazon_Product_Base b (nolock)
ON a.CustomerID = b.CustomerID
AND a.OrderSourceID = b.OrderSourceID
AND a.OrderSourceSKU = b.OrderSourceSKU
WHERE a.CustomerID = 1
AND b.IsDelete = 0
and a.AddTime >='2022-04-15' and a.AddTime <='2022-04-21'
--AND Datediff(day, '2022-04-15', a.AddTime) >= 0
--AND Datediff(day, '2022-04-21', a.AddTime) <= 0
3. 原始sql:
SELECT Count(0)
FROM RB_Amazon_OnlinePrice_Log a (nolock)
INNER JOIN RB_Amazon_Product_Base b (nolock)
ON a.CustomerID = b.CustomerID
AND a.OrderSourceID = b.OrderSourceID
AND a.OrderSourceSKU = b.OrderSourceSKU
WHERE a.CustomerID = 1
AND b.IsDelete = 0
AND Datediff(day, '2022-04-15', a.AddTime) >= 0
AND Datediff(day, '2022-04-21', a.AddTime) <= 0
--select count(0) from RB_Amazon_OnlinePrice_Log nolock --64239463
--select count(0) from RB_Amazon_Product_Base nolock --61503881
说明:
同 bug 28972 【Amazon Listing状态监测】列表默认查询条件,点击搜索后,报错超时, 刚已给解决方案,完成后修改此任务状态,方便后续跟踪验证
