合并查询和连接查询中的inner join一样吗?

前言:

在开发中我们常常会看到where 作为join使用的,那查询出来的结果一样,我们该如何区分到底使用where还是join呢?

合并查询:

比如找出
员工姓名及其所在的部门名称。
select e.ename,d.dname from emp e , dept d where e.deptno = d.deptno;
这样写的缺点在于
在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生1000000个结果,然后通过正确的 ID过滤出1000条记录。 这是一种低效利用数据库资源,数据库多做100倍的工作。 在大型数据库中,笛卡尔连接是一个大问题,对两个大表的笛卡尔积会创建数10亿或万亿的记录。
那我们什么时候可以使用合并查询呢?
当两张表没有关联点,但是有需要将数据合起来查询,可以使用where

inner join

上面的sql可以写成
select e.ENAME,d.DNAME from EMP e inner join DEPT d on e.DEPTNO = d.DEPTNO
这样写的好处在于:
可以避免创建笛卡儿积,用inner join 这样数据库就只产生等于ID 的1000条目标结果,这样就增加查询效率。

总结:

能使用连接查询尽量使用连接查询,连接查询的性能也优于子查询,所以能用连接查询的地方尽量少用子查询。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值