mysql - 为什么 'select * from Employee group by Id'比直接用Employee表快很多?

标签 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 可以使查询更快。谢谢。

最佳答案

在第一次查询时比较

on t.gerId = t1.id

第二个

on a.ManagerId = b.Id

另外第一个是内连接,第二个是左连接,这些查询和结果是不一样的。

关于mysql - 为什么 'select * from Employee group by Id'比直接用Employee表快很多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52396754/

相关文章:

mysql - MySQL 主键是否已经处于某种默认顺序

c# - linq 中的虚拟(预定义)列分组

mysql - 关于 WHERE 的重复键更新

java - EasyPHP 上的数据库服务器无法启动

mysql - GROUP BY 两次和 SUM

mysql - 它的代码无法更新或插入数据到 mysql 数据库

php - 在不同的服务器上有两个网站,但需要一个使用 php 和 mysql 的数据库

mysql - 'for update' 行阻塞是否也适用于连接表?

php - 清理插入 WordPress MySQL 数据库的 URL

php - 尝试更新数值时出现语法错误 (MySQL)