繁体   English   中英

为什么“按ID从Employee组中选择*”比直接使用Employee表要快得多?

[英]Why 'select * from Employee group by Id' is much faster than directly use the Employee table?

在LeetCode数据库问题中,一个叫做“员工的收入比其经理高”。 链接在这里: https : //leetcode.com/problems/employees-earning-more-than-their-managers/description/ 逻辑很简单:

select t.Name
from Employee t
join Employee t1
on t.ManagerId = t1.id
where t.Salary>t1.Salary

这花费了350ms。 但是随后我找到了一种快速提交的方法:

select a.Name as Employee from
(
    select * from Employee
    group by Id
) a
left join
(
    select * from Employee
    group by Id
) b on a.ManagerId = b.Id
where a.Salary > b.Salary

花费240毫秒。 症结可能在于select * from Employee group by Id中的select * from Employee group by Id 所以我想知道为什么select * from table group by id可以使查询更快。 谢谢。

在第一个查询中,您比较

on t.gerId = t1.id

在第二

on a.ManagerId = b.Id

同样,首先是内部联接,其次是左联接,那些查询和结果不相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM