Najlepszy sposób na stworzenie zmaterializowanego widoku w MySQL
19
Korzystam z MySQL 5.6. Nie jestem w stanie stworzyć zmaterializowanego widoku, jak to możliwe w Oracle. Widziałem jedno lub dwa rozwiązania, takie jak Flexview.
Czy ktoś może mi powiedzieć najlepszy sposób na stworzenie zmaterializowanego widoku w MySQL (automatyczne odświeżanie jak w Oracle) przy minimalnym stopniu złożoności?
Ponieważ już go masz, konieczne może być trochę staranności i smarowanie łokcia z twojej strony, aby móc go dalej używać (jeśli jeszcze tego nie zrobiłeś)
ALTERNATYWA # 1
Możesz zajrzeć do konfigurowania tabel podsumowań. Będziesz musiał zindeksować swoje tabele podstawowe w celu obsługi agregacji przed budowaniem tabel podsumowań.
ALTERNATYWA # 2
Oto stary post z http://www.materialized.info/, który ma bardziej praktyczną i intrygującą strategię. Wymaga użycia wyzwalaczy. Wygląda na to, że może być fajnie ...
ALTERNATYWA # 3
Jeśli tabele podstawowe nie są tak duże i możesz przeszukiwać zapytania dotyczące całych tabel raz w tygodniu, wypróbuj User Commentssekcję Dokumentacja MySQL na temat tworzenia widoku . Wyszukaj słowo materializedna tej stronie.
Jeśli twoje podstawowe dane są w większości stabilne lub możesz tolerować różnicę między widokiem a danymi, zastanów się nad użyciem narzędzi do prostej roli , które napisałem, aby rozwiązać ten przypadek użycia. Umożliwiają one pisanie w osobnych plikach złożonych zapytań SQL generujących tabele. Relacje między zapytaniami są generowane automatycznie, a zapytania są wykonywane w odpowiedniej kolejności za pomocą narzędzia do tworzenia Uniksa . Aby odświeżyć wygenerowane tabele, musisz uruchomić make clean all. Narzędzie jest szczególnie przydatne do stopniowego budowania wyrafinowanych zapytań, które wykonują się skutecznie w oparciu o wstępnie obliczone wyniki swoich danych wejściowych.
Znalazłem 2 możliwe rozwiązania zmaterializowanych widoków w MySQL:
Utwórz tabelę agregacji ze wszystkimi niezbędnymi danymi, a następnie utwórz wyzwalacze w tabelach, z których pochodzą dane.
Utwórz harmonogram, który okresowo agreguje dane w tabeli
Zobacz więcej szczegółów na temat implementacji 2 opcji w moim blogu tutaj: widok zmaterializowany MySQL
źródło
Jeśli twoje podstawowe dane są w większości stabilne lub możesz tolerować różnicę między widokiem a danymi, zastanów się nad użyciem narzędzi do prostej roli , które napisałem, aby rozwiązać ten przypadek użycia. Umożliwiają one pisanie w osobnych plikach złożonych zapytań SQL generujących tabele. Relacje między zapytaniami są generowane automatycznie, a zapytania są wykonywane w odpowiedniej kolejności za pomocą narzędzia do tworzenia Uniksa . Aby odświeżyć wygenerowane tabele, musisz uruchomić
make clean all
. Narzędzie jest szczególnie przydatne do stopniowego budowania wyrafinowanych zapytań, które wykonują się skutecznie w oparciu o wstępnie obliczone wyniki swoich danych wejściowych.źródło