Ich versuche, die folgende Abfrage in SQL Server ausführen, aber es dauert ca. 1 Stunde zu laufen. Tabelle 'dbo.AccessControl' hat ca. 3 Millionen Datensätze und 'dbo.username' Tabelle hat 3.5k Datensätze. Gibt es eine Möglichkeit, diese Abfrage zu optimieren, weil ich nicht glaube, dass ein einziger linker Join so viel Zeit für nur 3 Millionen Datensätze benötigen würde?Wählen Sie in SQL-Server viel Zeit nehmen
select isd.*,ac.username1+','+ac.Username2+','+ac.Username3 as UserName
into dbo.username
from dbo.details isd
left outer join dbo.AccessControl ac
on isd.LocationId=ac.LocationId
and isd.DepartmentId=ac.DepartmentId
and isd.productId=ac.productId;
Versuchen Sie eine innere Verknüpfung unioned mit (ein oder mehrere (d. h drei)) Anti-Joins. Ich habe viele Instanzen gesehen, bei denen ein innerer Join sofort abgeschlossen wird und ein linker Join für immer dauert. – cco
Bitte senden Sie den Ausführungsplan. Haben Sie Indizes in den Join-Spalten? Werden sie benutzt? Wie viele sind die geschätzten Zeilen im Plan? Ihre Abfrage könnte schließlich zu 3M * 3,5 Zeilen führen. Warum versuchen Sie, eine neue Tabelle mit all diesen Daten zu erstellen? –
Haben Sie den Aktivitätsmonitor überprüft, während die Abfrage ausgeführt wird? Dies wird zeigen, wenn es irgendwelche Sperren oder IO-Probleme gibt, sogar den Ausführungsplan der Anfrage anzeigen –