悠悠楠杉
SQL面试高频考点:攻克技术面必备的12个核心知识点
本文系统梳理SQL面试中的12个高频核心考点,包含语法优化、底层原理与实战案例,帮助求职者针对性突破技术面瓶颈。
一、基础语法类考点
1. JOIN的七种用法与执行逻辑
面试官常要求手写多表查询时,90%的候选人会混淆LEFT JOIN
与FULL OUTER JOIN
的区别。实际业务中最常用的是:
sql
SELECT a.order_id, b.customer_name
FROM orders a
LEFT JOIN customers b ON a.customer_id = b.id
WHERE b.city = '上海'
关键点:
- 解释ON
和WHERE
的执行顺序差异
- 画图说明Nested Loop Join的底层实现过程
2. 聚合函数与HAVING陷阱
统计部门平均工资超过1万的案例中:
sql
SELECT dept_id, AVG(salary)
FROM employee
GROUP BY dept_id
HAVING AVG(salary) > 10000 -- 注意不能使用WHERE
易错点在于混淆WHERE
(行级过滤)和HAVING
(组级过滤)的执行阶段。
二、性能优化类考点
3. 索引失效的六大场景
某电商平台查询:
sql
SELECT * FROM products
WHERE price > 100
ORDER BY create_time DESC
LIMIT 10
当发现查询延迟超过2秒时,需要检查:
- 是否在price和create_time上建立复合索引
- 是否存在隐式类型转换(如varchar字段传数字)
- 是否使用了!=
或LIKE '%前缀'
等操作符
4. EXPLAIN执行计划解读
通过分析以下输出判断性能瓶颈:
+----+-------------+-------+------------+------+---------------+-----+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+-----+---------+------+------+----------+-------------+
| 1 | SIMPLE | users | NULL | ALL | NULL | NULL| NULL | NULL | 10000| 10.00 | Using where |
+----+-------------+-------+------------+------+---------------+-----+---------+------+------+----------+-------------+
危险信号:
- type=ALL表示全表扫描
- rows=10000但filtered仅10%说明索引缺失
三、高阶应用类考点
5. 窗口函数实战应用
计算销售额累计占比的经典案例:
sql
SELECT
product_id,
sales,
SUM(sales) OVER (ORDER BY sales DESC) / SUM(sales) OVER () AS ratio
FROM sales_data
面试官常考察RANK()
vs DENSE_RANK()
的区别,以及PARTITION BY
的动态分组能力。
6. 事务隔离级别与锁机制
当被问到"如何解决幻读问题"时,需要分层次回答:
1. 现象复现:在RR隔离级别下连续查询结果不一致
2. 解决方案:升级到Serializable或使用Next-Key Lock
3. 代价分析:并发性能下降约30%~50%
四、架构设计类考点
7. 分库分表策略选择
针对千万级用户表的拆分方案:
- 水平拆分:按user_id范围分表(适合均匀分布)
- 垂直拆分:将用户基础信息与行为数据分离
- 路由策略:一致性哈希减少数据迁移量
8. SQL与NoSQL的混合架构
在社交APP的Feed流场景中:
- 关系型数据库存储核心用户关系
- Redis缓存好友列表
- MongoDB存储动态内容
面试时需要强调CAP理论中的权衡选择。
五、避坑指南
- 陷阱题:
COUNT(*)
和COUNT(1)
的效率差异(现代数据库已优化无差别) - 送分题:忘记
GROUP BY
的非聚合字段会导致语法错误 - 压轴题:10万条数据批量插入的优化方案(批处理+事务控制)
掌握这些考点后,面对90%的SQL技术面都能游刃有余。建议针对每个知识点准备1-2个实际业务案例,展现解决问题的能力而非死记硬背。