MYSQL子查询
来源:互联网 发布:bootcamp windows驱动 编辑:程序博客网 时间:2024/05/22 21:45
子查询可以简化SQL语句的编写,不过如果使用不当的话子查询会降低系统性能,为了避免子查询带来的性能问题,除了需要优化SQL语句之外还需要尽量降低使用子查询的次数。比如下面的子查询用来取得系统中所有年龄或者工资与Tom相同的人员:
select * from T_person where age = (select age from T_person where name = 'Tom')or salary = (select salary from T_person where name = 'Tom')
这个SQL语句可以完成要求的功能,不过可以看到类似的子查询被用到了两次,这会带来下面的问题:
1、同一个子查询被使用多次会造成这个子查询被执行多次,由于子查询是比较消耗系统资源的操作,所以这会降低系统的性能。
2、同一个子查询在多处被使用,这违反了编程中的DRY(Don't Repeat Yourself)原则,如果要修改子查询就必须对这些子查询同时修改,很容易造成修改不同步。
造成这种问题的原因就是子查询只能在定义的时候使用,这样如果多次使用就必须多次定义,为了解决这种问题,SQL提供了WITH子句用于为子查询定义一个别名,这样就可以通过这个别名来引用这个子查询了,也就是实现“一次定义多次使用”。
使用WITH子句来改造上面的SQL语句:
WITH person_Tom as(select * from T_person where name = 'Tom')select * from T_person where age = person_Tom.age or salary = person_Tom.salary
0 0
- mysql 子查询
- mysql 子查询
- Mysql子查询实例
- MySQL IN子查询
- mysql 子查询
- mysql 子查询
- Mysql子查询
- MySQL子查询
- mysql 子查询
- mysql子查询
- mysql子查询
- mysql 子查询
- 24、MySQL-子查询
- Mysql子查询
- MYSQL子查询
- mysql子查询优化
- mysql子查询
- MYSQL 子查询
- helloword
- 硬件创业成本计算
- iOS 大小端转换代码
- 图文RBAC权限管理详解
- Mac OS X配置Apache服务器
- MYSQL子查询
- Cocopods使用问题:Updating local specs repositories卡住不动
- Uploadify 3.2 参数属性、事件、方法函数详解
- kafka关键问题解释
- 中小学直播活动如何选择编码器还是直播机?
- 从boot读取软盘扇区中的汇编
- php断点调试--安装xdebug
- UIKit类关系总览
- iOS 在视图中调整按钮距离边框的位置