Ich habe eine SQL-Abfrage, die Analysetabellen erstellt, die SELECT INTO-Anweisungen aus aufgefüllten Staging-Tabellen verwenden. Dieser Teil geht ziemlich glatt, aber wenn ich versuche, Felder an die Analysetabellen, voneinander oder von den ursprünglichen Staging-Tabellen anzufügen, laufen die UPDATE-Abfragen für HOURS.SQL Server-Update-Abfragen, die zu lange dauern
Ich fühle diese Laufzeit ist nicht gerechtfertigt, da die meisten Datensätze pro Tabelle 200K ist. Ich habe das Gefühl, dass dies ein Problem mit meiner Protokolldateiverwaltung oder die Tatsache, dass ich keine Indizes für eine dieser Tabellen habe. Ich habe gezögert, Indizes zu bauen, weil ich weiß, wenn sie hastig erledigt werden, können sie tatsächlich mehr Probleme verursachen. Für diese Tabellen gibt es keine Trigger.
Ich versuche, einen Ansatz zu finden, so dass diese Abfrage konsistent ausgeführt wird. In der Vergangenheit hat es unter 1 Stunde gelaufen (was immer noch wahrscheinlich zu lang ist), aber heute hat es zum Beispiel mehr als 3 Stunden gedauert.
Ich habe die Protokolldatei bereits geändert, um 50% statt 10% automatisch zu vergrößern, um eine unbegrenzte MAXSIZE zu haben, habe ich den DB-Wiederherstellungsmodus auf SIMPLE gesetzt, und ich habe die Protokolldatei manuell verkleinert. Nichts davon hilft.
Ich weiß, dass TABELLE SCANS sind eine Quelle der Verzögerung in großen Abfragen, ist also die Lösung hier Indizes für alle Felder zu erstellen, die ich in meinen LINKEN JOINs unten dargestellt verwende? Diese Snippets sind genaue Beispiele für die Frage, wo die Abfrage verzögert ist. Ich habe Transparenz darin, weil ich die Ausführung des Skripts im LIVE QUERY STATISTICS-Fenster befolge.
UPDATE a
SET a.[Account ID] = b.[Account ID]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on a.[Company Account] = b.[Account Name]
WHERE a.[Account ID] IS NULL;
-- Link by website2
UPDATE a
SET a.[Account ID] = b.[Account ID]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on a.url2 = b.Website2
WHERE a.[Account ID] IS NULL;
--
UPDATE a
SET a.[SFDC Account Name] = b.[Account Name]
FROM SFAX.dbo.Leads as a
left join SFAX.dbo.Accts as b on
a.[Account ID] = b.[Account ID]
WHERE a.[Account ID] IS NOT NULL;
UPDATE a
SET a.ConvertedFlag = b.[Lead ID]
FROM SFAX.dbo.WhoAnalysis1 as a
LEFT JOIN SFAX.dbo.Contacts as b ON a.WhoId = b.[Contact ID];
Bitte geben Sie keine Leerzeichen in die Spaltennamen ein – Hogan
Sie sollten Indizes erstellen – Hogan
Sie nehmen nicht an, dass die 'CREATE TABLE'-Anweisungen auch nur das geringste Interesse haben könnten? –