select 子句中的内联查询与 where 子句中的连接之间的差异 [重复]
Posted
技术标签:
【中文标题】select 子句中的内联查询与 where 子句中的连接之间的差异 [重复]【英文标题】:DIfference between inline query in select clause and a join in where clause [duplicate] 【发布时间】:2014-10-18 12:02:47 【问题描述】:有什么区别:
select e.first_name,
e.last_name,
e.id,
d.dept_name
from employees e, departments d
where e.department_id = d.department_id;
和
select e.first_name,
e.last_name,
e.id,
(select d.dept_name frpm departments d where d.department_id = e.department_id) dept_name
from employees e;
我说的是性能、查询时间、CPU 利用率等方面的差异。 哪个更好用?
【问题讨论】:
你为什么不告诉我们?只需测试它,我们就可以讨论我们的事实。无意冒犯。 对于这两个查询,始终存在最坏情况和最佳情况的情况。您必须在数据库记录的不同条件下自行探索它们。 底部的一个为您提供员工中的记录数,如果员工:部门不是 1:1,则会出现错误。根据比赛的运作方式,排名第一的可能会给您更多或更少的员工数量。如果您设置了 FK,则不必担心,但请注意,它们可能根本不会给您相同的结果。 【参考方案1】:第一个是inner join
;返回的行是两个表中具有匹配 ID 的行。
虽然第二个会在子选择中没有共享部门 ID 的情况下为您提供 NULL
,但它仍会为您提供主选择的结果
【讨论】:
以上是关于select 子句中的内联查询与 where 子句中的连接之间的差异 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
UPDATE 查询的 WHERE 子句中的 SELECT 查询 [重复]