Frage

Ich habe eine Tabelle mit drei Spalten:

Benutzer varchar- Status varchar- rep int

Status und rep oft erhalten aktualisiert und eine der Voraussetzungen ist:

ein Datetime-Wert Ansicht Status und rep Werte, für jeden Benutzer, an dem angegebenen Datum.

Ich kann eine updated_at Datetime-Spalte die Tabelle hinzufügen und neue Zeilen whith denselben Benutzer einfügen statt Update bestehenden, aber die Tabelle groß wird und ich brauche die Abfrage-Ergebnisse zu ähnlichen Ergebnissen aus anderen Tabellen zu verbinden, damit ich brauche eine schnelle Abfrage.

Was ist die beste Ergebnis erzielt Lösung für dieses Problem in SQL Server?

War es hilfreich?

Lösung

Je nach genau, wie Sie gehen, um die Berichtsinformationen zu verwenden, ist es am besten sein könnte, eine History-Tabelle zu erstellen, bevor Sie die Haupttabelle aktualisieren, können Sie die aktuellen Werte aus in der History-Tabelle schreiben, Hinzufügen des Zeitstempels.

Das wäre am besten, wenn man wirklich nur spezifische Tage Kommissionierung / users / Stati aus der Geschichte

Andere Tipps

Ich würde speichern diese eine separate Bezugstabelle ist, da ich die meiste Zeit davon ausgehen, werden Sie nur den aktuellen Status werden abfragt, wenn Sie beitreten. Wenn Sie eine Menge dieser Art von Abfragen und das Hinzufügen dieser Art von Daten zu vielen Tabellen nicht nur diese eine tun werden, würde ich eine separate OLAP-Datenbank für das Reporting erstellen.

Übrigens, solange Sie dies tun, sollten Sie überlegen, ob Sie aufnehmen möchten, wer die Änderung als gut gemacht. Dann sind Sie im Grunde eine Auditing-Lösung gebaut.

Eine Möglichkeit hierfür wäre zwei getrennte Tabellen zu verwenden: eine „aktuelle Werte“ Tabelle und eine History-Tabelle. Die aktuellen Werte Tabelle würde die nur aktuelle Werte für jeden Benutzer enthalten, die es klein und leicht joinable halten würde. Die Geschichte Tabelle enthalten würde, die drei Spalten sowie den Zeitstempel Spalte aufgeführt sind, und würden die Änderungen der Werte im Laufe der Zeit verfolgen. Immer wollten Sie einen Wert in der aktuellen Wertetabelle ändern, würden Sie gleichzeitig eine Reihe mit den neuen Werten in die Geschichtstabelle hinzufügen, mit gettime () als Zeitstempel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top