1.什么是索引
给出索引的官方介绍:索引(Index)是帮助MySQL高效获取数据的数据结构。Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构 组织的索引(B+Tree索引)。
索引相当于一本字典的目录,通过目录快速的找到需要找的词。提高查找的速度。因此在mysql建立索引,是非常有必要的事情,mysql中的索引可以大大增强查询的速度。
如果将mysql中索引查询的速度比做兔子的速度,那么没有索引的mysql查询就是乌龟的速度。
2.索引的作用
提高查询速度。
3.索引的优点
1、索引能够提高数据检索的效率,降低数据库的IO成本。
2、在使用分组和排序子句进行数据检索时,大大减小查询时间。
3、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
4、加速两个表之间的连接,一般是在外键上创建索引。
4.索引的缺点
1、降低了更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
2、需要占用磁盘空间,建立的索引越多需要的空间越大。
3、维护成本高,创建索引和维护索引要耗费时间,而这个时间随着数据量的增加而增加。
5.创建索引
在穿件索引的时候,不要随便创建。首先需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
一般需要建立索引的字段
1、经常用在where语句之后的字段。
2、主键或者外键。
3、字段具有唯一性的时候建立唯一性索引。
4、在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
6.索引分类
索引分四类:普通索引、主键索引、唯一索引、复合索引。
普通索引:index 一般用于查询条件后的字段(包含重复值)。
主键索引:primary key 索引值是唯一值,切不能为null。
唯一索引:unique 索引值是唯一值,但是可以出现多次null,可以为null(不包含重复数据)。
复合索引:一个索引中包含多个列 ,这多个列是一一对应的。