
全文概要:
1.什么是索引 2.索引的种类及区别 3.有那些索引引擎
一、什么是索引
索引是对数据表中的一列或多列进行排序的一种结构,使用索引课快速访问数据表中的特定信息
二、索引的种类及区别
- 普通索引:可重复可为空,纯粹为加快检索速度
- 唯一索引:不可重复但是允许为空值
- 主键索引:特殊的唯一索引,不允许空值
- 组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用这些字段的最左边字段时,索引才会被使用
- 全文索引:通过大文本中某个关键字,就能找到该字段所属记录行
- 空间索引:对空间数据类型的字段建立的索引
相关概念:
- 非聚簇索引:唯一索引、组合索引、普通索引
- 聚簇索引:在Innodb中,聚簇索引默认是主键索引
如果表中未键主键呢?
如果没有主键,则按照下列规则来建聚簇索引
- MySQL会判断表中是否存在唯一且不为空的字段,若有,则该字段成为本表的聚簇索引
- 如果没有这样的字段,会隐式定义一个主键来作为聚簇索引
三、索引引擎
主要讲目前主流的两个索引引擎:
- MyISAM引擎:使用b+tree作为索引,叶子节点存放的是记录地址。MyISAM中主索引与辅助索引形式是一样的,主索引要求key不能重复,辅助索引key可以重复
- InnoDB引擎:与MyISAM索引与数据分开存放不同的是,InnoDB引擎数据文件本身就是一个索引,InnoDB引擎数据存放是b+tree结构组织存放的,叶子节点包含全部的数据信息,InnoDB引擎辅助索引叶子节点存放的是主键。
所以,InnODB的普通索引,实际上会扫描两遍:
第一遍:由普通索引找到主键;
第二遍:由主键索引找到行记录;
















