外观
优化多表查询
在MySQL中,用户可以通过连接来实现多表查询,在查询过程中,用户将一个表中的一个或多个共同字段进行连接,定义查询条件,返回统一的查询结果。这通常用来建立RDBMS常规表的关系。在多表查询中,可以应用子查询来进行优化,即在SELECT语句中嵌套SELECT语句。采用子查询优化多表查询的好处有很多,其中可以将分步查询的结果整合为一个查询,这样就不需要进行多次查询,提高查询的效率。
下面通过一个实例演示如何优化多表查询,如我们查询属于“一年三班”的全部学生姓名,其中学生信息表在tb_student表中,班级名称在tb_classes表中。第一个查询语句是使用连接查询,第二个查询语句是使用子查询。
set profiling = 1;
select s.name from tb_student as s,tb_classes as c
where s.class_id = c.id and c.name = '一年三班';
select name from tb_student as s
where s.class_id = (select id from tb_classes where name = '一年三班');
show profiles\G
可以看到,使用子查询的速度要比使用连接查询的速度快。