Ich habe 5 Datenbanken, die verschiedene Regionen des Landes repräsentieren. In jeder Datenbank gibt es einige hundert Tabellen mit jeweils 10.000 bis 2.000.000 Transaktionsdatensätzen. Jede Tabelle repräsentiert einen Kunden in der jeweiligen Region. Jede dieser Tabellen hat das gleiche Schema.
Ich möchte alle Tabellen abfragen, als wären sie eine einzige Tabelle. Die einzige Möglichkeit, die ich mir vorstellen kann, ist die Erstellung einer Ansicht, die alle Tabellen vereint, und dann die Ausführung meiner Abfragen gegen diese. Die Kundentabellen ändern sich jedoch ständig (da wir Kunden hinzugewinnen und verlieren), so dass ich die Abfrage für meine Ansicht ändern müsste, um neue Tabellen einzubeziehen (oder solche zu entfernen, die nicht mehr verwendet werden).
Gibt es einen besseren Weg?
EDIT
Als Antwort auf die Kommentare (ich habe dies auch als Antwort auf eine Antwort gepostet):
In den meisten Fällen werde ich keine Tabellen entfernen, sondern sie werden zu historischen Zwecken beibehalten. Wie ich in einem Kommentar zu einer Antwort geschrieben habe, war die Idee, die Zeit zu reduzieren, die ein kleinerer Kunde (mit nur 10.000 Datensätzen) braucht, um seine eigene Historie abzufragen. Es gibt etwa 1000 Kunden mit durchschnittlich 1.000.000 Zeilen (und mehr) pro Stück. Wenn ich alle Datensätze zu einer Tabelle hinzufügen würde, hätte ich fast eine Milliarde Datensätze in dieser Tabelle. Ich dachte auch, dass ich für die Zukunft plane, dass wir bei 5000 Kunden nicht eine riesige Tabelle haben, die alle Transaktionsdatensätze enthält (vielleicht ist das ein Fehler in meinem Denken). Ist es also besser, die Datensätze nicht aufzuteilen, wie ich es getan habe? Sollte ich alles in einer Tabelle zusammenfassen? Wird die Indizierung von Kunden-IDs Verzögerungen bei der Abfrage von Daten für kleinere Kunden verhindern?
0 Stimmen
Klingt so, als ob Sie Tabellen auf der Grundlage der von Ihnen gewonnenen Kunden erstellen. Wenn das der Fall ist, haben Sie kein solides Datenbankdesign.
0 Stimmen
Ich wette, Sie haben alle Arten von verrückten dynamischen Abfragen. Ich würde eine Kundentabelle empfehlen, die eine ID, eine Region, einen Namen usw. definiert, und dann eine Transaktionstabelle, die diese Kunden-ID und alle Daten verwendet. Sie können dann Abfragen mit WHERE CustomerID=@x und .... schreiben, das ist ein viel besseres Design