1

Mysql View 如何在内部工作?

create view testView  as select * from employee;

如果运行这个会在内部发生什么?

4

1 回答 1

2

通常,在调用它之前,创建一个视图并不会真正做太多事情。它几乎只是在使用之前得到验证。

视图通常使用MERGE将视图的查询与调用它的查询合并的方法。视图的另一种方法是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
于 2013-01-09T05:15:33.687 回答