2016 - 2024

感恩一路有你

数据库两个表关联查询 mysql两表关联查询和子查询的区别?

浏览量:1887 时间:2021-03-14 15:55:12 作者:admin

mysql两表关联查询和子查询的区别?

关联查询(join)与子查询(in):

两者select的时间复杂度是一样的(注:这里的select是指获得数据的方式,个数)。

唯一不同的是对于in子查询它每次执行内部查询的时候都必须重新构造一个JOIN结构(这就是大家常说的会将子查询转化成where exists(select 1 from a,b where a.id = b.id )),完成相应的初始化操作,并且在这次内部查询结束之后,要完成相应的析构函数,如index_init,index_end,而当外部查询是全表扫描的时候,这些操作的次数就是它的记录数,那么它们(构造,析构)所占用的性能也是显而易见的。简单一句话子查询的性能除了查询外,还消耗在JOIN的构造与析构过程。

sql多表关联查询能用哪几种方法写?

楼主使用的是子查询,子查询局限性较大,只能显示第一张表的字段。你可以这样写

SELECT * FROM biz.coursecomment a,so.sodetail b,so.somaster c

where a.sono=b.sono and b.sono=c.sono and c.TeacherNO="100199" and b.IsStudentComment="1" AND IsTeacherComment="1" and a.ToCustomerNO="100199"

这样写就避免了各种的子查询。当然,你还可以写成join的形式。join的层次更分明,代码如下:

SELECT * FROM biz.coursecomment a

join so.sodetail b

on a.sono=b.sono

join so.somaster c

on c.sono=b.sono

where c.TeacherNO="100199" and b.IsStudentComment="1" AND IsTeacherComment="1" and a.ToCustomerNO="100199"

如果不懂,可以追问

数据库两个表关联查询 多表关联查询优化 oracle三个表关联查询

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。