【发布时间】:2020-11-11 16:54:45
【问题描述】:
我在处理 SQL Server 2012 查询时遇到问题:运行查询时仅返回 10 行的一部分
这需要 50 秒我尝试在另一个时间运行它可能是 PC 有更多负载
但只为一个部分返回 10 行需要同样的时间 50 秒。
10 行 50 秒更多
我有 10000 个零件和 1500 万个相关记录,因此我需要提高性能以达到最佳状态
所以我该怎么做才能让查询在短时间内运行
这是我的查询:
见下面的执行计划:
https://www.brentozar.com/pastetheplan/?id=HyclwfSev
我尝试通过以下方式解决问题:
CREATE NONCLUSTERED INDEX index1
ON [dbo].[Excel_DK] ([PartNumber]) INCLUDE ([ZPartId],[FeatureName],[Value])
但返回 10 行还需要 25 秒
有什么办法可以提高性能
【问题讨论】:
-
我认为一个好的开始是右键单击查询并在上下文菜单中选择:“Analyze Query in database engine tune advisor”。而且,问题缺少实际查询,因此您需要将其包含在问题中
-
您在 PasteThePlan 上发布的执行计划是在添加非聚集索引
[index1]之前还是之后?如果是之后,您可能想尝试在查询末尾临时添加一个 RECOMPILE 选项并再次执行。您可能希望将聚集索引添加到#getDeliveryConfiguration表,其键列为DK_Feature。 -
此外,如果您使用声明的变量,行估计可能会有所偏差:[dba.stackexchange.com/questions/84626/….尝试将其捆绑为存储过程,甚至是临时过程。
标签: sql tsql sql-server-2012 sql-execution-plan sqlperformance