gpt4 book ai didi

sql-server - 分区和最大值的慢查询性能问题

转载 作者:行者123 更新时间:2023-12-04 11:46:58 24 4
gpt4 key购买 nike

这是我的一个性能不佳的查询......我做错了什么?
请帮我它在我的系统中执行了很多次,解决这个问题会给我一个通往天堂的阶梯

我用 sp_Blitz 检查了系统,没有发现致命问题

这是查询:

SELECT MAX(F.id) OVER (PARTITION BY idstato ORDER BY F.id DESC) AS id
FROM jfel_tagxml_invoicedigi F
INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
AND S.id = F.idstatocorrente
AND F.sequence_invoice % @number_service_installed = @idServizio
ORDER BY F.id DESC,
F.idstatocorrente OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;

这是查询计划

https://www.brentozar.com/pastetheplan/?id=SyYL5JOeE

我可以私下发给你我的系统属性

更新:
做了一些修改,它更好,但我认为它可以更好......
这是新查询:
SELECT MAX(F.id) AS id
FROM jfel_tagxml_invoicedigi F
INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
AND S.id = F.idstatocorrente
AND F.sequence_invoice % @number_service_installed = @idServizio;

以及新计划:
https://www.brentozar.com/pastetheplan/?id=SJ-5GDqeE

更新:
做了一些修改,它更好,但我认为它可以更好......
这是新查询:
SELECT top 1 F.id as id 
FROM jfel_tagxml_invoicedigi AS F
INNER JOIN jfel_invoice_state AS S
ON F.idstatocorrente = S.id
WHERE S.idstato= 1 AND S.id = F.idstatocorrente
and S.datastato > dateadd(DAY,-5,getdate())
AND F.progressivo_fattura % 1 = 0
ORDER BY S.datastato

和新的新计划
https://www.brentozar.com/pastetheplan/?id=S1xRkL51S

最佳答案

按用于对性能产生负面影响的计算字段进行过滤。您可以先执行其他过滤器,最后一步执行计算过滤器,以减少要匹配的行。也许它会填充 TEMPDB,因为它将在那里存储中间记录集,但在这种情况下,您要么增加它的大小,要么使用另一种方法。
这是你这样写的第二个查询(也许你需要调整它,我只是用 Notepad++ 写的:

SELECT MAX(id) AS id
FROM (
SELECT F.id, F.sequence_invoice % @number_service_installed as [idServizio]
FROM jfel_tagxml_invoicedigi F
INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
AND S.id = F.idstatocorrente
-- AND F.sequence_invoice % @number_service_installed = @idServizio
)
WHERE idServizio = @idServizio
;

除了子查询,您也可以尝试临时表或 CTE,也许其中一个是明显的赢家,如果您想要最高性能,值得一试。

关于sql-server - 分区和最大值的慢查询性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884476/

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