Meilleure façon de créer une vue matérialisée dans MySQL


19

J'utilise MySQL 5.6. Je ne suis pas en mesure de créer une vue matérialisée comme je le peux dans Oracle. J'ai vu une ou deux solutions comme Flexview.

Quelqu'un peut-il me dire la meilleure façon de créer une vue matérialisée dans MySQL (actualisation automatique comme dans Oracle) avec le minimum de complexité?

Réponses:


11

Les vues matérialisées n'existent pas dans MySQL.

Flexviews a été recommandé dans le DBA StackExchange avant

Puisque vous l'avez déjà, une certaine diligence raisonnable et de l'huile de coude de votre part peuvent être nécessaires pour continuer à l'utiliser (si vous ne l'avez pas déjà fait)

ALTERNATIVE # 1

Vous pourriez envisager de configurer des tableaux récapitulatifs. Vous devrez indexer vos tables de base afin de prendre en charge l'agrégation avant de créer des tables de résumé.

ALTERNATIVE # 2

Voici un vieux post de http://www.materialized.info/ qui a une stratégie plus terre à terre qui semble intrigante. Cela implique l'utilisation de déclencheurs. On dirait que ça pourrait être amusant ...

ALTERNATIVE # 3

Si vos tables de base ne sont pas si grandes et que vous pouvez vivre avec l'interrogation de tables entières une fois par semaine, essayez la User Commentssection de la documentation MySQL sur CREATE VIEW pour des idées. Recherchez un mot materializedsur cette page.


Dans la dernière version de MySQL, vous pouvez créer une table matérialisée dba.stackexchange.com/a/226707/50702
Revious

1

J'ai trouvé 2 solutions possibles pour avoir des vues matérialisées dans MySQL:

  1. Créez une table d'agrégation avec toutes les données nécessaires, puis créez des déclencheurs sur les tables d'où proviennent les données.

  2. Créer un planificateur qui agrège périodiquement les données dans une table

Voir plus de détails sur la façon d'implémenter les 2 options dans mon article de blog ici: vue matérialisée MySQL


0

Si vos données sous-jacentes sont généralement stables ou si vous pouvez tolérer une différence entre la vue et les données, envisagez d'utiliser les outils simple-rolap , que j'ai écrits pour résoudre ce cas d'utilisation. Ceux-ci vous permettent d'écrire dans des fichiers séparés des requêtes SQL complexes qui génèrent des tables. Les relations entre les requêtes sont automatiquement dérivées et les requêtes sont exécutées dans l'ordre approprié par l'Unix font outil. Pour actualiser les tables générées, vous devez exécuter make clean all. L'outil est surtout utile pour créer progressivement des requêtes sophistiquées qui s'exécutent efficacement en fonction des résultats pré-calculés de leurs entrées.


Vous devriez probablement rendre plus visible la divulgation (que vous êtes l'auteur de l'outil).
mustaccio

Bon point! J'ai édité la réponse pour clarifier cela.
Diomidis Spinellis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.