数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据.索引的实现通常使用B树或B+树(mysql常用的是索引B+树),除了数据之外,数据库系统还维护为满足特定查找算法的数据结构,这些数据结构以某种方式引用数据.这种数据结构就是索引。 索引的优点 1.通过创建索引,可以在查询的过程中,提高系统的性能; 2.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性; 3.在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间; 索引的缺点 1.创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大; 2.索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大; 3.在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护; 适用场景 1.经常需要搜索的列上; 2.作为主键的列上; 3.经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 4.经常需要根据范围进行搜索的列上; 5.经常需要排序的列上; 6.经常使用在where子句上面的列上; 索引的分类 聚簇索引:表记录的排列顺序和索引的排列顺序一致,所以查询效率快。只要找到第一个索引值记录,其余连续性的记录在物理上一样连续存放。聚簇索引的缺点就是修改慢,因为为了使表记录和索引的排列顺序一致在插入记录的时候,会对数据页重新排序。 非聚簇索引:表记录和索引的排列顺序不一定一致,两种索引都采用B+树的结构,非聚簇索引的叶子层并不和实际数据页相重叠,而采用叶子层包含一个指向表记录的指针,非聚簇索引层次多,不会造成数据重排。