web-dev-qa-db-ja.com

MySQLでマテリアライズドビューを作成する最良の方法

MySQL 5.6を使用しています。 Oracleのようにマテリアライズドビューを作成することができません。 Flexviewのような1つまたは2つのソリューションを見てきました。

MySQLでマテリアライズドビューを作成する最良の方法(Oracleのように自動更新)を最小限の複雑さで誰かに教えてもらえますか?

20

マテリアライズドビューはMySQLに存在しません。

Flexviews は、以前にDBA StackExchangeで推奨されていました

あなたはすでにそれを持っているので、あなたがそれを使い続けるためにあなたの側でいくつかのデューデリジェンスとエルボーグリースが必要かもしれません(まだ行っていない場合)

代替#1

サマリーテーブルの設定について調べてみてください。集計テーブルを作成する前に、集計をサポートするためにベーステーブルにインデックスを付ける必要があります。

代替#2

これは http://www.materialized.info/ からの古い投稿で、興味深く見えるより現実的な戦略があります。これにはトリガーの使用が含まれます。楽しそうですね...

代替#3

ベーステーブルがそれほど大きくなく、テーブル全体のクエリを週に1回実行できる場合は、 CREATE VIEWのMySQL SQLドキュメントUser Commentsセクションを試してみてください。そのページでWord materializedを検索します。

11
RolandoMySQLDBA

MySQLでマテリアライズドビューを持つための2つの可能な解決策を見つけました:

  1. 必要なすべてのデータを含む集計テーブルを作成し、データが含まれるテーブルにトリガーを作成します。

  2. データを定期的にテーブルに集計するスケジューラを作成する

2つのオプションを実装する方法の詳細については、こちらのブログ投稿をご覧ください。 マテリアライズドビューMySQL

1
coding-dude.com

基礎となるデータがほとんど安定しているか、ビューとデータの違いを許容できる場合は、この使用例に対処するために記述した simple-rolap ツールの使用を検討してください。これらにより、テーブルを生成する複雑なSQLクエリを個別のファイルに書き込むことができます。クエリ間の関係は自動的に導出され、クエリはUnixmakeツールを介して適切な順序で実行されます。生成されたテーブルを更新するには、make clean allを実行する必要があります。このツールは、入力の事前に計算された結果に基づいて効率的に実行される高度なクエリを段階的に構築する場合に主に役立ちます。

0