实用指南:八股已死、场景当立(场景篇-MySql)
废话不多说,今天更新场景篇-MySql的知识点,做好了开始发车喽!
一、场景篇-MySql
1、Q:如何排查 SQL 查询性能问题?列举至少 5 个导致索引失效的常见写法,并给出优化方案?
A:答案如下:
失效场景:
- 对索引字段使用函数或表达式(如
WHERE YEAR(create_time)=2023)。 - 隐式类型转换(如字符串字段用数字查询
WHERE id='123')。 - 联合索引未满足最左前缀原则(如索引
(a,b,c)但查询条件无a)。 - 使用
OR连接非索引字段(如WHERE a=1 OR b=2,若b无索引则全表扫描)。 LIKE以通配符开头(如LIKE '%abc')。
- 对索引字段使用函数或表达式(如
优化方案:
- 避免对索引字段计算,改用范围查询(如
create_time BETWEEN '2023-01-01' AND '2023-12-31')。 - 使用
EXPLAIN分析执行计划,确保type为ref或range,避免ALL(全表扫描)。
- 避免对索引字段计算,改用范围查询(如
2、Q: 线上出现死锁错误 Deadlock found when trying to get lock,如何定位并解决?
A: 先定位问题,在解决。通常步骤如下:
定位步骤:
- 执行
浙公网安备 33010602011771号