UPDATE-Befehl. Dauer mit 2 identische Tabellen ist unterschiedlich. Warum?

Viacheslav

Neuer Benutzer
Beiträge
2
Hallo Leute,



ich habe eine Situation, die ich selber nicht erklären kann.

Es gibt eine Tabelle (Zieltabelle) mit ca. 5,6 Millionen Datensätze, der tägliche Datenzuwachs beträgt durchschnittlich 1,3 Tausend Datensätze.

Daten in dieser Tabelle werden aktualisiert, dafür werden gruppierte Daten aus einer anderen Tabelle (Quelltabelle, 38 Tausend gruppierte DS, 42 Tausend, wenn die Daten nicht gruppiert sind) genommen (INNER JOIN-Befehl)



Bei der Aktualisierung sind ca. 17 Tausend Datensätze in Zieltabelle betroffen.



Wenn die Aktualisierungsabfrage ausgelöst ist, dauert es ca. 1200 Sekunden!

Es ist unglaublich viel. Als ich die Ursache gesucht habe, habe ich eine identische Kopie der Zieltabelle erstellt, und derselbe Abfrage ausgelöst.

Mit einer Kopie der Zieltabelle dauerte es erst 1 Sekunde!

Ich habe alles geprüft. Alle Eigenschaften der Zieltabelle und der Kopie sind identisch.

Die Daten sind auch identisch. Ein Unterschied war in Indizes-Fragmentierung, der Wert in beiden Fällen war aber unter 1%.

Die Indizes habe ich trotzdem neugebildet (REBUILD), das hat aber nicht geholfen.



Laut Ausführungsplan für Aktualisierung der Zieltabelle 100% Kosten sind für "Clustered Index Scan" gebraucht, 0 % für "Clustered Index Update" (Dauer - 1200 Sekunden)

Laut Ausführungsplan für Aktualisierung der Kopie von Zieltabelle 43% Kosten sind für "Clustered Index Scan" gebraucht, 54 % für "Clustered Index Update" (Dauer - 1 Sekunde)

Die Ausführungspläne enthalten auch andere Teile noch, die Prozentteil ist aber sehr gering. Die Ausführungspläne sehen unterschiedlich aus.

Version von SQL Server ist 10.50.4000.

Hat jemand eine Idee, wo kann die Ursache liegen?
 
Werbung:
Deine Beschreibung ist zwar ausführlich, trotzdem dünn bzw. unpräzise bzw. unvollständig. Wenn Du es nicht heraus findest, obwohl Du es vor der Nase hast, wie sollen wir es herausfinden, anhand Deiner unscharfen Beschreibung?
Da es einen Unterschied geben muss, wäre die Frage, was genau für Dich "identisch" bedeutet. Du könntest die "identische Struktur" beider Tabellen ja hier angeben. Dann müsste man nicht raten.
Um diesen Beitrag etwas hilfreicher zu gestalten: Du könntest auch oder wenigstens verraten, wie Du diese identische Kopie erstellt hast.
 
Werbung:
Hallo,
sorry. Die Test-Tabelle wurde mit dem derselben "CREATE"-Skript gemacht. Dann wurden die Daten (Einschließlich ID-Werte) mit "INSERT INTO" hinzugefügt.
Allen Eigenschaften danach wurden manuell geprüft. Alles war identisch.

Das Problem aber wurde gelöst. Nach Statistik Update in der Zieltabelle ist Abfragedauer genauso schnell wie für die Kopie.
 
Zurück
Oben