这里写目录标题

  • 一、什么是索引
  • 1. 一个可能的索引方式示意图
  • 2. 优势
  • 3. 劣势
  • 二、索引分类和用法
  • 1. mysql索引分类
  • 2. 基本语法
  • 3. mysql索引结构
  • 4. 哪些情况需要创建索引
  • 5. 哪些情况不需要创建索引


一、什么是索引

  1. 排好序的快速查找的数据结构。
  2. 索引(Index) 是帮助MySQL高效获取数据的数据结构,本质是数据结构。
  3. 索引的目的在于提高查找效率。
  4. 一般来说索引本身所在内存也比较大,索引往往以索引文件的形式存储在磁盘上。
  5. 常见索引一般是BTREE(多路搜索树)结构组织的索引。

1. 一个可能的索引方式示意图

mysql索引一般设置几个_字段

2. 优势

  1. 建立(书目索引)检索索引提高数据的检索效率,降低数据库的IO成本。
  2. 通过索引对数据进行排序,降低数据排序的成本,降低了cpu的消耗。

3. 劣势

  1. 索引也是要占用空间的
  2. 降低更新表的速度
  3. 需要需找最优索引,并且随着表结构的变化索引也要发生改变

二、索引分类和用法

1. mysql索引分类

○ 单值索引,一个索引只包含单个列,一个表可以有多个单值索引
	○ 唯一索引,索引列的值必须唯一,但允许为空值
	○ 复合索引,一个索引包含多个列

2. 基本语法

创建;	CREATE [UNIQUE] INDEX 索引名 ON 表名(列名);
		ALTER 表名 ADD [UNIQUE] INDEX [索引名] ON (列名);
删除:
		DROP INDEX [索引名] ON 表名;
查看:
		SHOW INDEX FROM 表名;

3. mysql索引结构

  1. BTree 索引
  2. Hash 索引
  3. Full-text 索引
  4. R-Tree 索引

4. 哪些情况需要创建索引

○ 主键自动建立唯一索引
	○ 频繁作为查询条件的字段应该建立索引
	○ 查询中与其他表关联的字段,外键关系建立索引
	○ 频繁更新的字段不适合创建索引
	○ Where 条件里用不到的字段不创建索引
	○ 单值/组合索引的选择(高并发在创建组合索引)
	○ 查询中排序的字段创建索引,提高排序速度
	○ 查询中统计或者分组的字段

5. 哪些情况不需要创建索引

○ 表记录太少 (少于300万)
	○ 经常增删改的表
	○ 数据重复且分布平均的表字段