Angenommen, es würde nicht die Indizes abgeschnitten. Das würde bedeuten, dass die Datenbank physikalisch inkonsistent ist. So kann es nicht sein.
Abschneiden entfernt logisch alle Zeilen und erstellt physisch neue B-Bäume für alle Partitionen. Da die Bäume frisch sind, besteht keine Fragmentierung.
Eigentlich bin ich nicht sicher, ob den Bäumen 0 oder 1 Seiten zugewiesen sind. Aber das macht nichts. Ich glaube, für temporäre Tabellen gibt es einen speziellen Fall, der mit dem Zwischenspeichern von temporären Tabellen zu tun hat. Ist auch egal.
Die Einfügung von Ihrer Frage funktioniert auf die gleiche Weise wie jede andere Einfügung. Es wird nicht durch das vorherige truncate in einer Cross-Statement-Kommunikationsweise beeinflusst. Ob es Fragmentierung verursacht, hängt von Ihrem speziellen Fall ab und, IMHO, am besten in einer neuen Frage.
„TRUNCATE sein TABLE entfernt alle Zeilen aus einer Tabelle, aber die Tabellenstruktur und ihre Spalten, Integritätsregeln, Indizes usw. Der Zähler, der von einer Identität für neue Zeilen verwendet wird, wird auf den Startwert für die Spalte zurückgesetzt, wenn der Identitätszähler beibehalten werden soll Verwenden Sie stattdessen DELETE. Wenn Sie die Tabellendefinition und ihre Daten entfernen möchten, verwenden Sie die Anweisung DROP TABLE "von http://msdn.microsoft.com/en-us/library/aa260621(v=sql.80).aspx. Wenn Sie die Tabelle abschneiden und Daten erneut einfügen, ist es nach dem Einfügen möglicherweise am sinnvollsten, den Index neu zu erstellen, da Sie neue Daten in der Tabelle haben. – Kprof
@Kprof Wir hatten eine passende Situation, wenn wöchentlich DELETE Server-Performance bis zur vollständigen Wiederherstellung des Indexes killt, aber wöchentlich TRUNCATE sauber auf MSSQL 2005 halten – alex