MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。

1、索引的分类


主键索引(primary key)

作用:独一无二的标识

特点:只能有一个列作为主键,也就是说不可以出现多个主键索引

唯一索引(unique key)

作用:将一个字段设置为唯一索引,可以避免重复的列出现

特点:可以将多个字段设置为唯一索引,也就是说可以出现多个唯一索引

常规索引(key / index)

特点:默认的

全文索引(fulltext)

作用:快速定位数据

特点:在特定的数据库引擎下才有

2、基础语法


2.1、设置索引

  1. -- 1、创建表前,给字段设置索引
  2. CREATE TABLE `student` (
  3. `id` int(10) NOT NULL COMMENT '学生编号',
  4. `name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
  5. `age` int(3) DEFAULT NULL COMMENT '学生年龄',
  6. PRIMARY KEY (`id`) --给字段`id`设置为主键索引
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  8. -- 2、创建表后,给字段设置索引,一般的索引名格式为:id_表名_索引名
  9. -- 方式一:
  10. create index `索引名` on `要设置为索引的字段名`
  11. -- 方式二:
  12. alter table `数据库名`.`表名` add fulltext index `索引名`(`要设置为索引的字段名`)

2.2、分析SQL的执行情况

  1. explain select ... from ...

2.3、显示所有的索引信息

  1. show index from `表名`

3、索引的作用


假设现在有一个字段为name,里面有100万条数据,其中有一个字段值叫:小吴!

现在我们要查找到小吴:

  • 未给字段name设置索引:

可能要查几万条数据甚至十几万条数据才能查找到!

  • 给字段name设置索引后:

根据索引直接定位到小吴,只查询一次


4、索引原则


索引在小数据量的时候,用处不大! 在大数据量的时候,区别十分明显!

  1. 索引不是越多越好
  2. 不要对经常变动的数据加索引
  3. 小数据量的表不需要加索引
  4. 索引一般加在用来查询的字段上

5、索引的数据结构


Btree:InnoDB 的默认数据结构

阅读一篇非常好的文章就能大致清楚了:http://blog.codinglabs.org/articles/theory-of-mysql-index.html

2020年7月3日吴鎔杰因为紧张的学习就没看了!跳过!有机会再看!