Mysqlビューは内部でどのように機能していますか?
create view testView as select * from employee;
これを実行すると、内部で何が起こりますか?
Mysqlビューは内部でどのように機能していますか?
create view testView as select * from employee;
これを実行すると、内部で何が起こりますか?
通常、ビューのクレートは、呼び出されるまで実際にはあまり効果がありません。使用されるまで、ほとんど検証されます。
ビューは通常MERGE
、ビューのクエリをそれを呼び出すクエリとマージするメソッドを使用します。ビューのもう1つの方法TEMP TABLE
は、必要なときに一時テーブルを作成する方法ですが、これはあまり一般的ではありません。
メソッドを使用したビューの基本的な例MERGE
:
クエリの表示:
SELECT t1.col1, t2.col2, t2.col3 FROM t1 JOIN t2 USING(id) WHERE x = 1
クエリの呼び出し:
SELECT col1, col3 FROM view WHERE y = 2
MySQLは基本的にこのクエリを次のように実行します。
SELECT col1, col3 FROM (SELECT t1.col1, t2.col2, t2.col3 FROM t1 JOIN t2 USING(id) WHERE x = 1) WHERE y = 2
ただし、クエリはマージされて最適化されるため、次のような単純な形式に最適化されます。
SELECT col1, col3 FROM t1 JOIN t2 USING(id) WHERE x = 1 AND y = 2