MST

星途 面试题库

面试题:PostgreSQL中条件过滤对查询优化的基础应用

在PostgreSQL中,假设有一个包含员工信息的表employees,表结构为(employee_id, name, age, department, salary)。现在要查询年龄大于30岁且薪资高于5000的员工信息,并且要求按照薪资降序排列。请写出实现该查询的SQL语句,并简要说明这条语句中条件过滤是如何参与查询优化的。
31.7万 热度难度
数据库PostgreSQL

知识考点

AI 面试

面试题答案

一键面试
SELECT employee_id, name, age, department, salary
FROM employees
WHERE age > 30 AND salary > 5000
ORDER BY salary DESC;
  • 条件过滤参与查询优化
    • 索引利用:如果agesalary列上存在索引,PostgreSQL优化器可以利用这些索引快速定位满足age > 30salary > 5000条件的行,减少全表扫描的数据量。
    • 查询规划调整:优化器会根据表的统计信息(如列的基数、数据分布等)来决定执行顺序。例如,如果age列的数据分布使得age > 30的筛选能快速排除大量数据,优化器可能会先基于age过滤,再对剩余数据根据salary过滤。这样可以减少中间结果集的大小,提升查询效率。
    • 选择性评估:优化器评估每个条件的选择性(满足条件的行数占总行数的比例),选择性高的条件会优先处理,以最大程度减少参与后续操作的数据量,最终生成最优的查询计划。