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


18

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

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

回答:


11

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

Flexviewsは前DBA StackExchangeで推奨されています

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

代替#1

サマリーテーブルの設定を検討することもできます。サマリーテーブルを作成する前に、集計をサポートするためにベーステーブルにインデックスを付ける必要があります。

代替#2

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

代替#3

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


MySQLの最新バージョンでは、materliazedテーブルを作成することができますdba.stackexchange.com/a/226707/50702
Revious

1

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

  1. 必要なすべてのデータを含む集計テーブルを作成してから、データの取得元のテーブルにトリガーを作成します。

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

私のブログ投稿で2つのオプションを実装する方法の詳細はこちら: マテリアライズドビューMySQL


0

基礎となるデータの大部分が安定している場合、またはビューとデータの違いを許容できる場合は、このユースケースに対応するために書いたシンプルなラップツールの使用を検討してください。これらにより、テーブルを生成する複雑なSQLクエリを個別のファイルに書き込むことができます。クエリ間の関係は自動的に導出され、クエリはUnix makeツールを介して適切な順序で実行されます。生成されたテーブルを更新するには、実行する必要がありますmake clean all。このツールは、入力の事前に計算された結果に基づいて効率的に実行される洗練されたクエリを段階的に構築するのに非常に役立ちます。


おそらく、あなたは(あなたがツールの作者であるという)開示をもっと目立たせるべきです。
mustaccio

いい視点ね!これを明確にするために回答を編集しました。
ディオミディススピネリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.