我正在使用 SQL Server 2019,并面临一个问题,即在进行更新时,只需要 20 秒即可更新 162 行。
Update FT SET
ft.ValueName=avo.name
FROM #package FT
inner join parts.Nop_PackageAttribute PA with(nolock)
on PA.PackageID=ft.PackageID
and PA.[Key]=FT.ZfeatureId
inner join Nop_AcceptedValuesOption AVO with(nolock)
ON convert(varchar(20),AVO.AcceptedValuesOptionID)=PA.Value
where FT.AcceptedValueID is not null
Run Code Online (Sandbox Code Playgroud)
脚本示例
create table #package
(
id int PRIMARY KEY IDENTITY(1,1),
ZfeatureId INT NULL,
AcceptedValueID INT NULL,
PackageID INT NULL,
ValueName NVARCHAR(2000) default ''
)
Run Code Online (Sandbox Code Playgroud)
我在 #package 表上的索引
create nonclustered index IDX_PackageID on #package(PackageID) include (ZfeatureId,AcceptedValueID , ValueName)
create index acceptedvaluesidpackage_idx on #package(AcceptedValueID) …
Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 中遇到一个问题,其中非聚集索引查找的性能很差。
下面是实际的执行计划 https://www.brentozar.com/pastetheplan/?id=Sk3-4JGAK
我怎样才能提高绩效?
下面是表定义
CREATE TABLE [Parts].[ManufacturingData](
[LeadFinishId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[PartID] [int] NOT NULL,
[LeadFinishMaterial] [varchar](50) NULL,
[CreatedDate] [datetime] NULL,
[CreatedBy] [int] NULL,
[ModifiedDate] [datetime] NULL,
[Modifiedby] [int] NULL,
[DeletedDate] [datetime] NULL,
[DeletedBy] [int] NULL,
[Revision_Id] [int] NULL,
[BaseMaterialID] [int] NULL,
[MSLID] [int] NULL,
[MSLSource_Revision_id] [int] NULL,
[MaximumReflowTemperatureID] [int] NULL,
[ReflowTemperatureSource_Revision_Id] [int] NULL,
[MaximumWaveTemperatureID] [int] NULL,
[WaveTemperatureSource_Revision_ID] [int] NULL,
[ReflowSolderTimeID] [int] NULL,
[WaveSolderTimeID] [int] NULL,
[NumberOfReflowCycleID] [int] NULL,
[LeadFinishPlatingID] [int] NULL, …
Run Code Online (Sandbox Code Playgroud) sql-server constraint stored-procedures execution-plan sql-server-2016