Moin spelmann,
das würde ich anders beantworten als sheel.
Die Frage "Lösche ich täglich den Inhalt der Datenbank und schreibe alle Datensätze neu, oder ist es sinnvoll nur geänderte Datensätze zu aktualisieren?" ist doch abhängig davon
a) ob du "geänderte Datensätze" überhaupt ohne Aufwand erkennen kannst. Wenn die DS in dem Import einen Zeitstempel für das letzte Änderungsdatum haben, dann ist sicherlich eine Delta-Datenübernahme sinnvoll. Schon allein, weil sich von 2500 Datensätzen wahrscheinlich nur 3 pro Tag ändern.
Und die Performance von "3 Datensätze neu anlegen oder aktualisieren" vs. "2500 Datensätze löschen + 2500 Datensätze neu inserten" ist relativ eindeutig vergleichbar.
b) Weiterhin ist es abhängig davon, ob du beiden Datensätzen auch referentielle Integrität hast - also ob die importierten auch irgendwelche Childdatensätze haben oder nicht. Ich kann deine "ca. je 20 Knoten" nicht recht einschätzen, hört sich für mich aber nach Childsätzen an.
In diesem Fall ist ein "Leeren" der Tabellen doch fachlich ohnehn Quark - dann hast du doch jeden Tag immer wieder nur eine Momentaufnahme, einen Snapshot eines Zustands, wie er zum Zeitpunkt des Exports mal kurz in der Quelle war. Kannst du dafür nicht live (via bereitgestellter Nur-Lese-Views) direkt die Daten der Quelle anzeigen?
c) wenn du die Daten "übernehmen" musst aus technischen Gründen: - Ist es dann nicht sinnvoller, auch eine Historie mitzupflegen?`Wenn du nur Deltadaten übernimmst (was ich ja oben empfohlen habe), dann musst ja nicht nur neue Datensätze inserten und vorhandene aktualisieren, sondern auch Datensätze lösche, die "gestern noch" in der Quelle vorhanden waren, heute aber nicht mehr dabei sind. D.h. das kannst du am stressärmsten ja über ein GUELTIG_VON / GUELTIG_BIS Datum nmachen. Dabnn hätte dein Datenimport wenigstens auch einen gewissen Mehrwert ggü. der Quelle.
Grüße
Biber