web-dev-qa-db-fra.com

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

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é?

20
Bhupendra Pandey

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

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

Comme 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 ancien article 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 accepter d'interroger des tables entières une fois par semaine, essayez le User Comments section de la Documentation MySQL sur CREATE VIEW pour des idées. Recherchez Word materialized sur cette page.

11
RolandoMySQLDBA

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

1
coding-dude.com

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é via l'outil Unix make . 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.

0
Diomidis Spinellis