面试题答案
一键面试SELECT e.name AS employee_name, m.name AS manager_name
FROM employees e
JOIN employees m ON e.manager_id = m.id
WHERE e.salary > 5000;
优化思路:
- 使用
JOIN
操作将employees
表与其自身进行连接,通过e.manager_id = m.id
关联员工与其上级领导。 - 使用
WHERE
子句筛选出工资大于5000的员工,在WHERE
子句中条件直接作用于员工表,避免不必要的数据筛选,提高查询效率。这样的写法直接且清晰,并且能有效利用索引(如果salary
、manager_id
等字段上有索引)来加快查询速度。 假设salary
字段和manager_id
字段上都有索引,数据库在执行WHERE e.salary > 5000
时能够快速定位到满足条件的员工记录,然后通过JOIN
关联找到对应的上级领导记录。