Wpis z mikrobloga

Przez chwilę miałem pomysł by poratować się widokiem zmaterializowanym zamiast codziennie update'ować w nocy tabelę zmianami z ostatnich 2 miesięcy, ale olśniło mnie, że usuwamy dane źródłowe starsze niż 3 lata (zostają już tylko w postaci agregatów w tabeli) i one odrazu wyleciałyby z mview. Rozumiem, że widok zmaterializowany z chwilą gdy usunę dane np. za 2018 od razu też utraci te dane. Czy jest jakaś opcja by "znieczulić" go na zmiany dla danych starszych niż np. 2 lata? Wiem że nie brzmi to mądrze, ale czasem lepiej się miło zaskoczyć niż całe życie żyć w nieświadomości ( ͡° ͜ʖ ͡°) Ewentualnie może znacie jakiś inny sposób wykorzystania onlinowego updatowania jaki daje widok zmaterializowany z zachowaniem danych archiwalnych?
#sql #tsql #mssql
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@michoopro: zrób test i tyle. Załóż tabele test z dwoma kolumnami wladuj 100 rekordów i utwórz widoks i indeks do niego żeby fizycznie trzymał dane. Na mssqlu nie ma typowych widoków materialixowanych jak na Oracle. Potem usuń 50 rekordow i zobacz co się stanie. Pamiętaj o takich akcjach jak rebuild indexow i struktur bo możesz się nie miło zdziwić w przyszłości ( ͡° ͜ʖ ͡°)
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@michoopro: nie ma w tabeli źródłowej widoku = nie ma w widoku (nie ważne czy zmaterializowany czy nie)
To czego szukasz to "tabela" i już to robisz aktualnie.
Ewentualnie możesz pomyśleć o takim potworku, że aktualizujesz tabelę raz do roku danymi które zaraz mają być usunięte, a wszystkie dane za ostatnie dwa lata bierzesz z tabel źródłowych i takie dwa "obiekty" łączysz poprzez UNION ALL ( ͡ ͜
  • Odpowiedz