现在的位置: 首页 > 综合 > 正文

MySql中的视图重写

2018年05月20日 ⁄ 综合 ⁄ 共 955字 ⁄ 字号 评论关闭

               物化技术:对子查询进行优化时,可以把子查询的结果保存在内存中,提高查询效率,达到一种物化的效果。

               物化视图:是把视图的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不被支持,即复杂视图不被优化。

抱歉!评论已关闭.