2017-02-28 21 views
0

頻繁に変更されない2つのテーブル(1日に2回更新され、最大2000と1000の行を持つ)からクエリを実行するビューがあります。MySQLビューのパフォーマンスTEMPTABLEまたはMERGE?

MERGEまたはTEMPTABLEのどちらを実行すると良いでしょうか?

Wondering、私のケースでは、MySQLはクエリ結果をキャッシュして、TEMPTABLEを最良の選択にしますか?

読書https://dev.mysql.com/doc/refman/5.7/en/view-algorithms.html私は、基本的にMERGEアルゴリズムが、それを呼び出すクエリにビューコードを注入してから実行することを理解しました。 TEMPTABLEアルゴリズムは、ビューを最初に実行し、その結果を一時テーブルに格納してから使用します。しかし、キャッシュする言及はありません。

私は自分でマテリアライズドビューを実装するオプションがあることを知っています(http://www.fromdual.com/mysql-materialized-views)。 MySQLは自動的にTEMPTABLEの結果をキャッシュして代わりに使用できますか?

答えて

1

どのアルゴリズムですか?特定のクエリとスキーマによって異なります。 通常オプティマイザはより良い方法を選択します。指定しないでください。

しかし...オプティマイザが実際に悪い方法を選ぶことがあります。その時点で、実際の唯一の解決策はビューを使用しないことです。つまり、一部のビューは、SELECTと同様に最適化することができません。

具体的なケースについてお聞きしたい場合は、SHOW CREATE VIEWSHOW CREATE TABLEsとさらにSELECTビューを呼び出してください。等価物を構築するSELECTSELECTsにはEXPLAINも含まれています。

関連する問題