[英]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.