物化技术:对子查询进行优化时,可以把子查询的结果保存在内存中,提高查询效率,达到一种物化的效果。
物化视图:是把视图的sql语句部分的数据保存下来,视图只有定义部分,没有数据部分,但是物化视图有数据部分。
视图分为简单视图和复杂视图,是为了为sql的优化进行的说明。
就是说视图对象不存在了,替换为视图的sql,并进行进一步的优化。
视图对象直接出现在了from后面,可以使用视图的语句来替换视图对象,并对原来的sql进行优化,这样
就应用了视图重写技术来实现了优化。
切记:Mysql不支持复杂视图的重写。
首先,在查询计划中没有视图对象v_t_1_2,说明视图被重写了;t1出现了两次做连接操作;
t1表和t1表首先做了一个内连接操作,然后和t2进行了一次内连接操作,视图被重写了。
把视图定义的部分放到from子句中,和上面的实例做比较,里面有了4个对象,<derived2>来源于t1和t2的连接查询;
子查询没有被消除;No matching min/max row:没有匹配的最小/最大值
从处理后的语句可以看出,视图没有被消除。
视图被消除了,视图被重写了;并且没有子查询存在,说明被重写为了多表连接;
图:视图名称没有出现,说明group by没有对这个查询构成影响
视图被消除了,视图被重写了;
图:说明外连接也被优化掉了,优化为了连接操作
视图v_t_gd_1_2里面带有分组操作,是个复杂视图,视图名称出现,t1和t2做了连接后,合并为derived2,然后和t3做了一个连接。
复杂视图没有被重写,复杂视图的重写在mysql不被支持,即复杂视图不被优化。