gpt4 book ai didi

sql - 加入因 WHERE 条件而减慢

转载 作者:行者123 更新时间:2023-12-01 13:37:53 24 4
gpt4 key购买 nike

我们的一个观点(通常很快)是从昨天中午开始需要很长时间才能运行。什么都没有改变,但现在需要几分钟才能运行。

SELECT 
T1.ITEMNO,
ROUND(SUM(T3.TOTAL * V1.USDCOST), 3) USDTOTALCOST,
ROUND(SUM(T3.TOTAL * V1.GBPCOST), 3) GBPTOTALCOST,
SUM(T3.TOTAL) AS TOTALCOMPONENTS
FROM
TABLE1 T1 WITH (NOLOCK)
INNER JOIN TABLE2 T2 WITH (NOLOCK) ON T1.RECORD_ID = T2.RECORD_ID
INNER JOIN TABLE3 T3 WITH (NOLOCK) ON T1.RECORD_ID = T3.RECORD_ID AND T2.LINENO = T3.LINENO
INNER JOIN VIEW1 V1 ON T2.COMPONENTNO = V1.ITEMNO
WHERE
T2.COMPONENTNO <> '' AND T1.WINDOW_ID = 'COMPONENTS'
GROUP BY T1.ITEMNO

现在,如果我删除计算的 USDTOTALCOSTGBPTOTALCOST 列,那么查询运行得非常快。另外,如果我删除条件 T1.WINDOW_ID = 'COMPONENTS' 那么这也会大大提高查询速度。

VIEW1 本身也运行得非常快,它似乎只是导致此 View 在加入时变慢并且 T1.WINDOW_ID = 'COMPONENTS'不强加条件。

我被卡住了 - 我不再知道去哪里检查以尝试让这个查询在合理的时间内运行。我通常会在执行计划的顶部检查 SSMS 建议我创建哪些索引,但是当我检查此查询的执行计划时没有这样的建议。

是什么导致查询速度如此之慢?我能做些什么来尝试让它再次工作?

提前致谢。

最佳答案

我已经按照执行计划设法解决了这个问题,并看到有一个 Hash Match 占 20% 和一个 Index Scan 占 14%。

enter image description here

我在正在扫描索引的表上创建了一个索引,查询立即加速。

CREATE NONCLUSTERED INDEX IND_POPRECORD ON POP30310(PORCTNM)

关于sql - 加入因 WHERE 条件而减慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42507332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com