面试题答案
一键面试SELECT c.customer_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
WHERE o.order_date > '2023 - 10 - 01';
性能提升说明
- 减少查询次数:子查询会先执行内部子查询,再将结果用于外部查询,需要进行多次查询。而JOIN查询是在一次查询操作中同时关联两个表,减少了查询操作的次数,在大数据量时能节省时间。
- 执行计划优化:数据库优化器对JOIN查询的执行计划优化能力通常更强。JOIN能让优化器根据表结构、索引等信息,更有效地选择连接算法(如嵌套循环连接、哈希连接等),从而提高查询效率。例如,若
orders
表的order_date
字段和customers
表的customer_id
字段上都有索引,JOIN查询可以更好地利用这些索引来加速数据检索,而子查询在利用索引方面可能存在局限性。