I work on sql server 2019 i face issue i can't reduce high cost of sort it reach to 86 percent
so How to reduce it please
additionally it take too much time to execute it .
it take 6:06 minutes
execution plan as below :
execution plan
statment that make issue
select a.RecomendationId,cast(STRING_AGG(cast(f1.FeatureValue as varchar(300)) ,'|') WITHIN GROUP(ORDER BY f1.FeatureId ASC)as varchar(300)) AS DiffFeatures into ExtractReports.dbo.TechnologyOriginalFeaturesEqual from extractreports.dbo.partsrecomendationActive a with(nolock)inner join ExtractReports.dbo.TechnologyPlPartsFeaturValuesOrg f1 with(nolock) on f1.partid=a.OrignalPartIdinner join [Technology].Receipe Ft WITH(NOLOCK) on ft.featureid=f1.featureid and ft.operatorid=1group by a.RecomendationId
statment execution take too much time to execute ddl with indexes
create table ExtractReports.dbo.TechnologyPlPartsFeaturValuesOrg(ID int identity(1,1),PartId int,FeatureID int,FeatureName varchar(200),FeatureValue varchar(200))ALTER TABLE ExtractReports.dbo.TechnologyPlPartsFeaturValuesOrgADD CONSTRAINT PK_TechnologyPlPartsFeaturValuesOrg PRIMARY KEY (ID);create index partidoriginalParts_ix on ExtractReports.dbo.TechnologyPlPartsFeaturValuesOrg(partid)create index FlagRecomendationorg_ix on ExtractReports.dbo.TechnologyPlPartsFeaturValuesOrg(featureid,FeatureValue)include(partid)create table extractreports.dbo.partsrecomendationActive(RecomendationId int identity(1,1),RecomendationPartId int,OrignalPartId int)create clustered index recomendations_ix on extractreports.dbo.partsrecomendationActive(RecomendationId)create nonclustered index recomendationsparts_ix on extractreports.dbo.partsrecomendationActive(RecomendationPartId)create nonclustered index recomendationsoriginal_ix on extractreports.dbo.partsrecomendationActive(OrignalPartId)CREATE TABLE [Technology].[Receipe]([ReceipeID] [int] IDENTITY(1,1) NOT NULL,[PLID] [int] NULL,[FeatureID] [int] NULL,[OperatorID] [int] NULL,[FeatureTypeID] [int] NULL,PRIMARY KEY CLUSTERED ([ReceipeID] ASC))