前言
存储引擎是数据库的核心,常用的MySQL存储引擎有InnoDB,MyISAM,memory.索引是加速数据的查询的一种数据结构.
1. 索引简介
1.1 索引优点
- 查询数据块
- 数据唯一性
- 加速表之间的连接
1.2 索引缺点
- 索引会占用存储空间,可能比本身的表数据还大
- 只对查有利,增加了增删改的负担
1.3 使用索引的注意事项
- 字段值差别大的数据使用索引(性别列就不要用索引了)
- 字符字段可以只选取字段的前几位字符建立索引,能简少存储数据.
2.两个重要存储引擎InnoDB和MyISAM
2.1 InnoDB
2.1.1 特点
- 支持事务
- 处理数据量巨大
- 表数据和索引分开存储
- 支持行级锁定
- 缺省 6B长度主键
- 主键本身就是索引,其索引映射的不是地址,而是主键,从而找到行记录
2.1.2 InnoDB索引
只支持B+树
2.2 MyISAM
2.2.1 特点
- 不支持事务
- 插入和查找极快
- 不支持事务
- 单纯增查数据的首选
2.2.2 MyISAM索引
只支持B+树
2.2.3 memory索引
支持 B+树和HASH
MySQL数据库一般默认innoDB存储引擎.
3. 索引的分类
- 普通索引和唯一索引
- 单列索引和组合索引(组合索引:最左匹配才能使用)
- 全文索引:创建分词,为每个分词映射地址,从而通过找到索引中的分词而找到数据的地址.
- 空间索引
4. 索引设计原则
- 并非越多越好.
- 避免对经常更新的表建立过多索引.
- 数据量小的表不使用索引.
- 索引应该建立在值差异较大的列上.
- 频繁分组操作表上建立组合索引.
- 尽量使用短索引,节省磁盘空间.