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