8.1 索引简介

8.1.1 索引的含义和特点

优点:

  1. 通过创建唯一索引,可以保证表中每一行数据的唯一性;

  2. 可以打打加快数据的查询速度,这也是创建索引的主要原因;

  3. 可以实现数据的参考完整性方面,可以加速表和表之间的连接;

  4. 在使用分组和排序子句进行查询时,可以显著减少查询中分组和排序的时间;

缺点:

  1. 创建索引和维护索引要消耗时间,并且随着数据量的增加所耗费的时间也会增加;

  2. 索引需要占磁盘空间,除了数据表站数据空间之外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸;

  3. 当对表中的数据进行增加、修改和删除的时候,索引也要动态的维护,这样就降低了数据的维护速度;

8.1.2 索引的分类

  1. 普通索引和唯一索引

    1. 普通索引:基本索引,允许重复值与空值

    2. 唯一索引:值必须唯一,但允许有空值,如果是组合索引,则列值的组合必须唯一。主键索引是特殊的唯一索引,不允许有空值

  2. 单列索引和组合索引

    1. 单列索引:一个索只包含一个单列

    2. 组合索引:表中多个字段组合上创建索引,只有在查询条件中使用了这些字段的左字段时,索引才会被使用。使用组合索引是遵循最左前缀集合;

  3. 全文索引

    类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许重复与空值,全文索引可以在CHARVARCHARTEXT类型的列上创建(MySQL只用MyISAM存储引擎支持)

  4. 空间索引

    是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有4中,分别是GEOMETRYPOINTLINESTRINGPOLYGON。MySQL使用SPATIAL关键字进行扩展,使得能够用于创建正轨索引类似的语法创建空间索引,对应的列必须声明NOT NULL(MySQL只用MyISAM存储引擎支持)

8.1.3 索引的设计原则

  1. 并非越多越好,大量的索引不仅占用磁盘,还会影响新增,更新,删除的性能;

  2. 避免对经常更新的表加过多的索引,并且索引中的列尽可能少;对经常查询的字段应该创建索引,但要避免添加不必要的字段;

  3. 数据量小的表最好不要使用索引;

  4. 在条件表达式中经常用到的不同值较多的裂伤简历索引,不同值较少的就不要简历索引。比如性别,就不用简历索引;

  5. 当唯一性是某种数据本身特征的时候,指定唯一索引;

  6. 在拼单进行排序或分组的裂伤创建索引,如果待排序的列有多个,可以在这些列上简历组合索引.

最后更新于

这有帮助吗?