本文主要讨论了MySQL面试中的核心知识点,包括数据类型和存储特性、数据库范式、索引概念及其优化策略,以及索引的类型和数据类型。以下是详细解析:
1. 字符类型(char vs varchar):
- char具有固定长度,一旦定义,长度就不能改变,这使得空间利用率相对较低,但存储和访问速度较快,适合存储固定长度的字符串,如电话号码或身份证号。
- varchar则可变长度,可以根据实际数据长度动态调整,适合存储不固定长度的文本,空间效率较高。
2. 数据库范式:
- 第一范式(1NF)强调字段的原子性,不允许数据冗余。
- 第二范式(2NF)要求除主键外的其他列都完全依赖于主键,消除部分依赖。
- 第三范式(3NF)进一步要求非主键列不依赖于其他非主键列,消除传递依赖,保证数据的一致性和独立性。
3. 索引的概念和作用:
- 索引是数据库中的数据结构,用于加速数据检索,相当于文件目录,通过查找索引来定位数据,减少查询时间。
- 索引的优缺点:提升查询速度,减少排序成本,但占用物理空间,影响更新速度。
4. 索引优化策略:
- 选择唯一性索引(避免重复值),加快查询。
- 针对频繁用于查询条件的字段建立索引。
- 对排序、分组和联合操作的字段创建索引。
- 控制索引数量,平衡空间和性能。
- 对于小数据量表,可能无必要使用索引。
- 删除不常用或废弃的索引。
- 选择更小的数据类型创建索引以节省空间。
- 使用前缀索引,减少空间消耗。
5. 索引的类型:
- 普通索引:基础类型,允许空值和重复值。
- 唯一索引:索引值唯一,允许空值。
- 主键索引:唯一且不能为空,用于标识行。
- 复合索引:涉及多个字段,遵循“最左前缀”匹配原则。
- 全局索引:仅在MyISAM引擎中可用。
6. 索引的数据类型:
- Hash索引:通过哈希函数快速查找,适用于InnoDB和MyISAM引擎。
理解并掌握这些知识点对于MySQL面试至关重要,可以帮助你在实际场景中做出更有效的数据库设计和优化决策。同时,熟悉面试中可能被问到的问题,有助于提升你的面试表现和入职机会。