Halihallo Harald
Aber selbst, wenn ich das einmal am Tag mache - das ist sowieso eher vom Verhältnis Datenmenge/Zeit abhängig -, denke ich, es dauert länger, den Index zu löschen, um beim Insert einen Vorteil zu haben und ihn dann aber wieder (den Vorteil) kaputt zu machen, indem ich den Index wieder setze.
Teste dies mal mit 1'000'000 Datensätzen und staune :-)
Das würde dann stimmen, wenn ich mehr Interesse an einem NEUEN Index habe, oder?
Dann hast du einfach noch mehr Zeit gespart :-)
Es hilft jedoch auch in deinem Fall.
---
Grundsätzlich: Die "Index löschen, Daten einfügen, Index erstellen"-
Technik bringt wohl erst ab einer gewissen Anzahl an Datensätzen
etwas.
Deine Argumentation ist zwar einleuchtend, aber falsch :-)
Falsch deswegen, weil es vergleichsweise ein kleinerer Aufwand ist
den Index zu löschen und in einem Aufwisch neu zu erstellen, denn
wenn die Datenbank bei *jedem* INSERT eine "Referenz/Index" in den
Index schreiben muss (wenn der Index am Ende generiert wird, werden die Daten in einem Aufwisch geschrieben => viel weniger
Schreibzugriffe auf die Festplatte). Falls dich diese Argumentation
nicht überzeugt, überzeugt dich ein Benchmark mit einer grossen
Tabelle (bei kleinen Tabellen könnte es eben auch kontraproduktiv
sein, das ist die "andere Seite der Münze").
Wo die Grenze liegt, kann ich dir nicht sagen. Das musst du selber
auf deinem System austesten.
Tipp: Teste es doch einfach mal :-)
BTW: Wenn es nicht darum geht eine ganze Tabelle zu
kopieren/verschieben, sondern nur einige Datensätze, dann gilt diese
Technik nur bedingt... Aber dein SQL-Statement mit
INSERT INTO ... SELECT * ... lässt dies nicht vermuten. Du kopierst
die gesamte Tabelle, ja?
Viele Grüsse
Philipp