索引题:先判断它解决什么查询问题
B+树索引适合范围查询和排序访问,联合索引要注意列顺序,覆盖索引可以减少回表,索引列上使用函数可能导致索引失效。看似都是索引题,其实问法不同。
题目如果说“查询条件符合索引列顺序”,多半在考最左前缀;如果说“只需要从索引里拿到查询列”,多半在考覆盖索引;如果说“对索引列做函数处理”,就要警惕索引失效。
| 题干信号 | 对应考点 | 答题提醒 |
|---|---|---|
| B+树 | 索引结构 | 适合范围查询和有序扫描 |
| 联合索引列顺序 | 最左前缀 | 从最左列开始匹配更容易用上索引 |
| 不回表 | 覆盖索引 | 查询列被索引覆盖 |
| 函数包住索引列 | 索引失效风险 | 可能无法直接利用索引有序性 |
事务题:ACID 不是四个孤立名词
原子性强调一组操作要么都做,要么都不做;一致性强调事务前后数据满足约束;隔离性强调并发事务之间互不干扰到不该看到的程度;持久性强调提交后的结果不会因为故障轻易丢失。
考试常把回滚、提交、日志、并发读写、脏读、不可重复读这些词放在题干里。不要只看 ACID 四个字母,要看题干描述的是失败恢复还是并发隔离。
索引和事务放在一起复习的好处
数据库系统工程师考试很少只考纯概念。真实题干可能会说系统查询慢、并发写入多、刚写完读不到、回滚后数据恢复等。你要判断这是索引设计问题、读写分离一致性问题,还是事务隔离问题。
复习时建议给自己建两个抽屉:性能问题先看索引和执行路径;正确性问题先看事务、约束和隔离。分类清楚,干扰项就少很多。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- 数据库为什么常用 B+ 树索引?B+ 树索引 / 数据库B+树索引
- 覆盖索引为什么可以减少回表查询?覆盖索引 / 回表查询
- 联合索引为什么要注意最左前缀原则?联合索引 / 最左前缀原则
- 读写分离为什么可能出现刚写完却查不到?读写分离 / 主从复制
- 数据库事务的原子性主要保证什么?事务 / ACID
- 事务隔离级别用于解决哪些并发问题?事务隔离级别 / 数据库事务隔离级别