面试题答案
一键面试SQL语句
SELECT *
FROM orders
WHERE customer_id IN (
SELECT customer_id
FROM customers
WHERE customer_city = '北京'
);
优化方式
- 索引优化:
- 在
customers
表的customer_city
字段上创建索引,这样在子查询中过滤customer_city = '北京'
时能够快速定位数据,减少全表扫描。例如:CREATE INDEX idx_customers_city ON customers (customer_city);
- 在
orders
表的customer_id
字段上创建索引,这样在主查询根据customer_id
筛选订单信息时也能加速查询。例如:CREATE INDEX idx_orders_customer_id ON orders (customer_id);
- 在
- 使用连接替代子查询:使用
JOIN
操作往往性能更好。例如:
SELECT orders.*
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id
WHERE customers.customer_city = '北京';
连接操作在很多数据库中执行计划更优,能够减少查询处理的复杂度和资源消耗。