46.笔记 MySQL学习——将子查询改写为连接
2017-11-17 21:25
686 查看
46.笔记 MySQL学习——将子查询改写为连接
连接的效率有时回避子查询更好,如果使用子查询的SELECT语句需要花费很长时间才能执行完毕,可以尝试把它改写为一个连接,看看执行效果是否有所改善。
mysql> select * from score where event_id in(select event_id from grade_event where category='T');
修改为连接如下:
mysql> select score.* from score inner joingrade_event on score.event_id = grade_event.event_id wheregrade_event.category='T';
mysql> select * from student where student_id notin (select student_id from absence);
修改过如下:
mysql> select student.* from student left joinabsence on student.student_id=absence.student_id where absence.student_id isnull;
连接的效率有时回避子查询更好,如果使用子查询的SELECT语句需要花费很长时间才能执行完毕,可以尝试把它改写为一个连接,看看执行效果是否有所改善。
改写用来查询匹配的子查询
原子查询如下:mysql> select * from score where event_id in(select event_id from grade_event where category='T');
修改为连接如下:
mysql> select score.* from score inner joingrade_event on score.event_id = grade_event.event_id wheregrade_event.category='T';
改写用来查询非匹配的子查询
原子查询如下:mysql> select * from student where student_id notin (select student_id from absence);
修改过如下:
mysql> select student.* from student left joinabsence on student.student_id=absence.student_id where absence.student_id isnull;
相关文章推荐
- Mysql学习笔记九——内连接、左连接、右连接查询
- MySQL学习笔记9:连接查询
- mysql学习笔记之连接查询与子查询
- MySQL学习笔记5:子查询与连接
- mysql学习笔记(六)--- 多表查询之外键、表连接、子查询、索引
- MySQL学习笔记9:连接查询
- MySQL学习笔记-子查询和连接
- MySQl 子查询,左右连接,多表连接学习笔记
- php学习笔记(二)php与mysql连接与用php发送SQL查询
- MySQL学习笔记9:连接查询
- Mysql学习笔记(二):子查询与连接
- (MYSQL学习笔记2)多表连接查询
- MySQL学习笔记-子查询和连接
- Mysql-学习笔记(==》连接查询_高级查询五)
- MySQL学习笔记 3:子查询、连接、运算符和函数
- MySql官方手册学习笔记2 MySql的模糊查询和正则表达式
- Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
- sqlserver -- 学习笔记(三)解决php连接sqlserver2005视图时显示“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项”的问题
- MySQL学习记录(多表连接查询+演示分析)七 DML
- MySql学习 - 查询/子查询/连接查询/联合查询