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

时间:2018-09-19 01:33:28

标签: mysql

在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

这需要350毫秒。但是后来我找到了一种快速提交的方法:

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 table group by id可以使查询更快。谢谢。

1 个答案:

答案 0 :(得分:0)

在第一次查询时您进行比较

on t.gerId = t1.id

第二秒

on a.ManagerId = b.Id

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