Verknüpfen der Ergebnisse in einer durch Kommas getrennten list

Ich versuche, alle Mitarbeiter zu verknüpfen, die mit einer gewissen "Interaktion" verknüpft sind Ich möchte, dass die Mitarbeiter auf einer Zeile mit Komma trennen, die sie trennen, ich habe die folgende Abfrage, die funktioniert aber sehr langsam ist.

SELECT CONVERT(VARCHAR(254), COALESCE( STUFF( ( SELECT ', ' + LTRIM(RTRIM(REPLACE(emp1.Full_Name,CHAR(9),''))) FROM Employee emp1 WITH (nolock) JOIN Rn_Int_Employee rie WITH (nolock) on emp1.Employee_Id = rie.Employee_Id WHERE rnint.Rn_Interactions_Id = rie.Rn_Interactions_Id GROUP BY emp1.Full_Name ORDER BY emp1.Full_Name FOR XML PATH (''),TYPE ).value('text()[1]', 'nvarchar(max)'), 1, 2, '') ,STUFF(( SELECT ', ' + LTRIM(RTRIM(REPLACE(emp1.Full_Name,CHAR(9),''))) FROM Employee emp1 WITH (nolock) WHERE rnint.Rn_Create_User=emp1.Rn_Employee_User_Id GROUP BY emp1.Full_Name ORDER BY emp1.Full_Name FOR XML PATH (''),TYPE ).value('text()[1]', 'nvarchar(max)'), 1, 2, ''))) AS Employees FROM Rn_Interactions rnint 

Hat jemand irgendwelche Empfehlungen für einen effizienteren path, dies zu tun?

Ich habe Ihre Frage überprüft und ein paar interessante Dinge gesehen:

  • Sie beschweren sich über die Verwendung von STUFF in Verbindung mit FOR XML PATH als eine, die langsam ist
  • Sie wiederholen den NOLOCK Hinweis
  • Alte JOIN Syntax

Ich habe persönlich eine sehr gute performance mit der Verknüpfung dieser Zeilen in eine einzelne Zelle mit der Verwendung von STUFF und FOR XML PATH wie Sie getan haben, obwohl das Problem auf Ihrem Ende ist wahrscheinlich eine Struktur, die Hilfe verwenden können. Ich bin bereit zu wetten, dass Ihre Indizierung ist nicht bis zu Par und das korrigieren diejenigen würden Sie wirklich weit.

Bitte teilen Sie uns Ihren Ausführungsplan mit, damit wir Ihnen die ausstellen können. benutze folgendes auch für einfaches plan teilen: https://www.brentozar.com/pastetheplan/