一、综述
1.1是什么?
索引是一种结构,索引是对数据库表里面一列或者多列进行排序的一种结构,使用索引可以提高数据库里面特定数据的查询速度。
1.2作用:
- 提高查询速度
- 确保数据的唯一性
- 可以加速表与表之间的连接,实现表与表之间的参照完整性
- 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化
1.3分类
- 主键索引(PRIMARY KEY)
- 唯一索引(UNIQUE)
- 常规索引(INDEX)
- 全文索引(FULLTEXT)
举例:
select * from table1 where id=50000
如果在执行这一条SQL语句,在没有索引的时候,它会遍历数据库表里面的所有记录,直到找到id是50000的记录为止。如果id是自增的,那他就会一直遍历这个表,直到50000。它会整个表地遍历一遍。但是一旦有了索引,就能直接去找到50000这一行。
MySQL里面存储数据是一行一行的,但是查询数据却是一列一列的。所以可以给列加索引,到时候直接去定位到相应的位置,这样就提高了效率。
可以直接理解为加了索引之后就给查询设计了一定的算法,能提高效率。
这个地方就记住一句话就行了:加了索引之后,就能使得查询的速率提高。
二、主键索引
2.1主键
某一个属性组能唯一标识一条记录。
如学生表(学号、姓名、班级、性别等),学号就是唯一标识的,可作为主键。
因为在实际情况中根据主键查询很常用,所以有了主键索引这个东西,数据库会自动的给你添加了主键的那个字段添加了一个索引。
2.2特点
- 最常见的索引类型
- 确保数据记录的唯一性
- 确定特定数据记录在数据库中的位置
2.3原理
数据库把索引单独存起来了,比如说你设置了主键索引,它会把主键索引单独存在一个文件里面。查某个值的时候会先去查对应的索引,根据索引查找对应的数据。
比如小学的新华字典,根据偏旁部首去查字。
三、唯一索引(UNIQUE)
3.1作用
避免同一个表中某数据列中的值重复。一般使用唯一索引的目的是为了确保一个列里面的数据不重复,而不是为了提高查询速度。
3.2与主键索引的区别
- 主键索引只能有一个
- 唯一索引可以有多个
- 主键非空唯一,唯一索引允许有空值
四、常规索引
4.1作用
快速定位数据。
42.注意事项
1、index和key关键字都可设置常规索引
2、 应加在查找条件的字段(也就是说这一个字段经常出现在where的后面)
3、不宜添加太多常规索引,影响数据的插入、删除和修改操作
五、全文索引
5.1作用
快速定位特定数据
5.2注意
- 只能用于MyISAM类型的数据表
- 只能用于CHAR、VARCHAR、TEXT数据列类型
- 适合大型数据集(比如这一列中存储的是合同的内容)