MySQL问题:主要索引类型(聚簇、辅助、覆盖、前缀)
(1)啥是主键索引?
主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行记录。每个表只能有一个主键索引。主键索引也叫聚簇索引。
特性:
唯一性索引,要求主键值必须唯一,不允许有NULL值
数据行实际存储在主键索引的叶子节点中
自动创建,当定义Primary Key,数据库自动创建主键索引
注意:实践时要考虑主键自增,这样使得顺序写入性能好,减少页分裂
- 啥是辅助索引
辅助索引是一种非主键索引,它提供主键之外的快速查询路径,但需要结合主键索引才能定位到完整数据行。
特性:
数据结构与主键索引一样,采用B+Tree结构,但叶子节点存储的内容是主键值
查询流程(回表)
查找辅助索引树,回表查询主键索引
如何解决回表:
使用覆盖索引,如果一个索引(通常是辅助索引)包含了查询中需要的所有字段,那么数据库可以直接通过该索引返回结果,而无需回表,这种索引称为覆盖索引。
创建联合索引,将多个字段作为一个联合索引,索引中存在这些数据,查询就不会再次检索主键索引,从而避免回表。
(3)啥是前缀索引?
前缀索引是一种数据库索引技术,它只对列值的前一部分字符建立索引。
特点:减少索引占用的存储空间,同时在一定程度上保持索引的查询效率,较小的索引可以更快地加载到内存中
适用场景:文本字段较长,字段长度有区分度,存储空间有限
注意事项:
无法用于Order By和Group By操作,因为它们需要完整的列值
无法作为覆盖索引,原因无法提供完整列值
在InnoDB中,前缀长度最多为767字节