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;