索引:一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。
所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中,索引是一种数据结构,一般是B-TREE 。
MySQL索引方法有几种:MySQL目前主要有以下几种索引方法:B-Tree,Hash,R-Tree。
唯一索引: index 可以为空,可以不唯一
普通索引:unique index 可以为空,一定要唯一
全文索引:fulltext 用于模糊查询使用 , mysql5.6后innodb引擎也支持全文索引
单列索引:唯一索引 普通索引等都不是唯一的,可以由多列字段加普通索引,而只加一个字段的叫单列索引。
多列索引:与单列索引相反,给多列字段加索引称为多列索引。
主键和唯一索引的区别?
- 主键一定会创建一个唯一索引,但是有唯一索引的列不一定是主键;
- 主键不允许为空值,唯一索引列允许空值;
- 一个表只能有一个主键,但是可以有多个唯一索引;
- 主键可以被其他表引用为外键,唯一索引列不可以;
- 主键是一种约束,而唯一索引是一种索引,是表的冗余数据结构,两者有本质的差别