在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
可以使查询更快。谢谢。
答案 0 :(得分:0)
在第一次查询时您进行比较
on t.gerId = t1.id
第二秒
on a.ManagerId = b.Id
首先是内部联接,其次是左联接,那些查询和结果不相同。