Wir haben diese große Datenbank (> 1 TB), die wir "verkleinern" möchten. Die Datenbank dreht sich um eine Hauptentität, nennen wir sie "Besuch". Angenommen, es handelt sich um eine Datenbank für eine medizinische Praxis.
Es gibt insgesamt 30 "Besuchstypen", wie z. B. Verfahren, jährliche Besuche, Nachsorgeuntersuchungen, Impfungen usw., von denen jeder eine Hilfstabelle für "Besuch" ist, z. B. "visit_immuno".
Die Datenbank hat seit dem Jahr 2000 ungefähr 12 Jahre an Daten gesammelt. Jemand hat vorgeschlagen, dass wir ungefähr 3 Jahre an Daten in der "Live" -Version aufbewahren und den Rest in einer "old_data" -Datenbank. Das Datum wird NUR in der Tabelle "Besuch" gespeichert, da es normalisiert ist. Die Visit-Tabelle enthält auch eine ROWVERSIONSpalte und eine BIGINTPseudoidentitätsspalte (gruppiert). Nehmen wir in jeder Hinsicht an, der Clustering-Schlüssel wird von einer SEQUENCE (SQL Server 2012 Enterprise) gefüllt - wir werden ihn benennen cid.
Das visit.dateist nicht immer in der gleichen Reihenfolge wie der Clustering-Schlüssel. Wenn ein Arzt beispielsweise längere Besuche durchführt und mit seinem "Aktenkoffer" Daten zurückgibt, werden diese in der Haupttabelle zusammengeführt. Es gibt auch einige Aktualisierungen an der Tabelle "visit", die dazu führen, dass die ROWVERSIONSpalte nicht mehr mit den Spalten cidund synchron dateist. Einfach gesagt, es werden aus diesem Grund weder geeignete Partitionsschlüssel erstellt ROWVERSIONnoch erstellt cid.
Die Geschäftsregel zum Entfernen von Daten aus dem "Live" lautet, dass der visit.dateZeitraum länger als 36 Monate sein muss und ein untergeordneter visit_paymentDatensatz vorhanden sein muss. Die Datenbank "old_data" enthält außer keine der Basistabellen visit%.
Am Ende haben wir also:
Live DB (täglicher Gebrauch) - Alle Tabellen Old-Data DB - ältere Daten für die visit%Tabellen
Der Vorschlag sieht eine kombinierte Datenbank vor , bei der es sich um eine Shell handelt, die Synonyme für ALLE Basistabellen in den Live DB(Ausnahme- visit%) Plus- Ansichten enthält , die ALLE in den visit%Tabellen in den beiden Datenbanken vereinen.
Unter der Annahme, dass die gleichen Indizes in der Old-DataDatenbank erstellt werden, funktionieren die Abfragen in den UNION-ALL- Ansichten einwandfrei ? Welche Art von Abfragemustern kann den Ausführungsplan für die UNION-ALL- Ansichten auslösen ?