MST

星途 面试题库

面试题:MySQL如何避免不必要的数据请求之查询优化

在MySQL中,假设有一个`employees`表,包含`employee_id`、`name`、`department`、`salary`、`hire_date`等字段。现在要查询`department`为‘HR’且`salary`大于5000的员工`name`和`hire_date`,请写出查询语句,并简述如何优化此查询以避免不必要的数据请求。
11.5万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
SELECT name, hire_date
FROM employees
WHERE department = 'HR' AND salary > 5000;

优化措施

  1. 索引优化
    • departmentsalary字段上建立联合索引。例如:
    CREATE INDEX idx_department_salary ON employees (department, salary);
    
    这样在查询时,MySQL可以利用索引快速定位到满足department = 'HR' AND salary > 5000条件的记录,而不需要全表扫描,从而减少不必要的数据请求。
  2. 查询限制:如果业务允许,尽量在查询中添加合适的LIMIT子句,只获取需要的行数,避免获取过多不必要的数据。例如,如果只需要获取前10条满足条件的记录:
    SELECT name, hire_date
    FROM employees
    WHERE department = 'HR' AND salary > 5000
    LIMIT 10;