mysql也有complex view merging 这个特性(5.6 , 5.7)

出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

 

研究 mysql 一件有趣的sql 事情 ,  mysql 也有oracle  complex view merging 这个东西 , 具体原理我就不说了, 网上有很多文章 , 在子查询里面带有变量可以不合并到主查询里面

cnblogs的审查太严格, 老说我排版不好不能加入原创...................

模拟案例:

表结构如下:

CREATE TABLE `t_order` (
`emp_no` int(11) DEFAULT NULL,
`dept_no` char(4) DEFAULT NULL,
`from_date` date DEFAULT NULL,
`to_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

原sql 语句:

select a.* from (select t_order.* from t_order order by dept_no asc,emp_no desc) a group by a.dept_no;

执行计划:

mysql也有complex view merging 这个特性(5.6 , 5.7)_第1张图片

 

修改后sql语句:

select a.* from (select t_order.* from t_order,(select @a:=0) b order by dept_no asc,emp_no desc) a group by a.dept_no;

执行计划:

mysql也有complex view merging 这个特性(5.6 , 5.7)_第2张图片

 

真实案例:

下面就是用这技巧帮一个朋友解决问题SQL:

原SQL语句:

mysql也有complex view merging 这个特性(5.6 , 5.7)_第3张图片

 

修改后SQL语句:

 mysql也有complex view merging 这个特性(5.6 , 5.7)_第4张图片

修改后执行计划:

mysql也有complex view merging 这个特性(5.6 , 5.7)_第5张图片

 

 

 

 

你可能感兴趣的:(mysql也有complex view merging 这个特性(5.6 , 5.7))