1. 索引概述
定义:索引是帮助MySQL 高效查询的数据结构
2. 索引优势劣势
优势
1. 提高数据检索效率,降低数据库的IO成本
2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗
劣势
1. 实际上索引也是一张表,保存了主键和索引字段,并指向实体类的记录,
所以索引列也要占用空间
2. 虽然提高了查询效率,但是也降低了更新表的速度
3. 索引结构
MySQL 提供了一下4中索引
- BTREE 索引:最常见的索引类型,大部分索引都支持 B树索引
- HASH索引:只有Memory 引擎支持,使用场景简单。
- R-tree索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少(不特别介绍)
- Full-text(全文索引):全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从MySQL 5.6 版本开始支持全文索引。
索引 | InnoDB 引擎 | MyISAM 引擎 | Memory 引擎 |
---|---|---|---|
BTREE 索引 | 支持 | 支持 | 支持 |
HASH 索引 | 不支持 | 不支持 | 支持 |
R-tree 索引 | 不支持 | 支持 | 不支持 |
Full-text | 5.6 版本之后支持 | 支持 | 不支持 |