出处:黑洞中的奇点 的博客 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;
执行计划:
修改后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;
执行计划:
真实案例:
下面就是用这技巧帮一个朋友解决问题SQL:
原SQL语句:
修改后SQL语句:
修改后执行计划: