Historientabelle



  • Hallo zusammen,

    ich hätte mal eine kleine Frage. Wir haben eine ziemlich stark frequentierte Tabelle mit bspw. 20 Spalten. Eine dieser Spalten ist ein Flag.

    SELECT * FROM Tabelle WHERE Flag=0;
    SELECT * FROM Tabelle WHERE Flag=1;
    

    Die erste Abfrage wird benötigt, um deren Ergebnis grafisch darzustellen. Das passiert extrem häufig. Dabei kommen ca. konstant 100 Zeilen zurück.

    Die zweite Abfrage wird eher selten ausgeführt und ist im Produktivbetrieb mit noch mehr Filterkriterien versehen. Aber anders als die erste wächst hier die Anzahl der Zeilen. Im Moment sind es 100.000 Zeilen und es werden pro Tag ca. 300 mehr.

    Nun meine Frage. Macht es performancetechnisch einen Sinn vielleicht eine Historientabelle anzulegen? Sobald also das Flag von 0 auf 1 geändert werden würde, würde bei einer weiteren Tabelle der Datensatz aus der Tabelle in die Historientabelle verschoben werden. Wäre das sauber?



  • Das hört sich für mich nach einem Fall für "Materialized View" an. Welche DB verwendest du?



  • Firebird kennt leider keine Materialized View's:-(



  • Dann könnte dein Ansatz helfen. Die Daten sollten dann aber bereits aggregiert und indiziert sein, um Performance beim nächsten Lesezugriff zu sparen.


Anmelden zum Antworten