【问题标题】:DIfference between inline query in select clause and a join in where clause [duplicate]select 子句中的内联查询与 where 子句中的连接之间的差异 [重复]
【发布时间】: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,则不必担心,但请注意,它们可能根本不会给您相同的结果。

标签: sql oracle


【解决方案1】:

第一个是inner join;返回的行是两个表中具有匹配 ID 的行。

虽然第二个会在子选择中没有共享部门 ID 的情况下为您提供 NULL,但它仍会为您提供主选择的结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2012-10-28
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2019-03-19
    相关资源
    最近更新 更多