19

マテリアライズド ビューを実装する方法は?

そうでない場合、マテリアライズド ビューを MySQL で実装するにはどうすればよいですか?

アップデート:

以下は機能しますか?これはトランザクションでは発生しませんが、それは問題ですか?

DROP TABLE IF EXISTS `myDatabase`.`myMaterializedView`;
CREATE TABLE `myDatabase`.`myMaterializedView` SELECT * from `myDatabase`.`myRegularView`;
4

4 に答える 4

2

あなたの例は、「フルリフレッシュ」マテリアライズドビューに似ています。ソース テーブルに数百万または数十億の行が含まれている場合、データ ウェアハウスの設定でよく使用される "高速更新" ビューが必要になることがあります。

代わりに挿入/更新 (アップサート) を使用して既存の「ビュー テーブル」をソース ビューの主キーに対して結合する (キーを保持できると仮定) か、最後の更新の date_time を保持し、それを使用することで、高速更新を概算します。リフレッシュ SQL の基準で、リフレッシュ時間を短縮します。

また、ドロップ/作成ではなく、テーブルの名前変更を使用することを検討してください。そうすれば、新しいビューを作成して配置しても、使用不能になるギャップはほとんどありません。最初に新しいテーブル 'mview_new' を作成し、'mview' の名前を 'mview_old' に変更 (またはドロップ) し、'mview_new' の名前を 'mview' に変更します。上記のサンプルでは、​​SQL populate の実行中はビューを使用できません。

于 2010-03-28T21:04:07.717 に答える
0

ページの下部にある mySQL ドキュメントとコメントによると、人々はビューを作成し、それらのビューからテーブルを作成しているようです。このソリューションが具体化されたビューの作成と同等かどうかはわかりませんが、現時点で利用できる唯一の手段のようです。

于 2013-06-07T17:50:12.540 に答える