在了解mysql索引的分类之前,要先注意以下几点:

  • 索引可以加快查询的速度,但是会影响插入数据的速度。(在插入数据的同时,数据库会按照索引排序。所以在插入大量的数据时,可以先删除索引,插入完成以后,再创建索引);
  • 索引的最终目的是为了使查询数据的速度变快;
  • 要根据实际情况,选择最合适的的索引方式;

Mysql的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。

  1. 普通索引:在创建普通索引时,不附加任何限制条件。这类索引可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定。建立索引以后,查询时可以通过索引进行查询。例如,在student表的stu_id字段伤建立一个普通索引。查询记录时,就可以根据该记录进行查询。
  2. 唯一性索引:使用UNIQUE参数可以设置索引为唯一性索引。在创建唯一索引时,限制该索引的值必须是唯一的。例如,在student表的stu_name字段中创建唯一性索引,那么stu_name字段的值就必须是唯一的。通过唯一性索引,可以更快速地确定某条记录。主键就是一种特殊唯一性索引。
  3. 全文索引:使用FULLTEXT参数可以设置索引为全文索引。全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上。查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度。例如,student表的information字段是TEXT类型,该字段包含了很多的文字信息。在information字段上建立全文索引后,可以提高查询information字段的速度。在默认情况下,全文索引的执行方式不区分大小写。但是索引的列使用而今排序后,可以执行区分大小写的全文索引。
  4. 单列索引:在表中的单个字段上创建索引。单列索引只根据该字段进行索引。单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。只要保证该索引只对应一个字段即可。
  5. 多列索引:多列索引是在表的多个字段上创建一个索引。该索引只想创建时对应的多个字段,可以通过这几个字段进行查询。但是,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用。例如,在表中的id、name和sex字段上建立一个多列索引,那么只有查询条件使用了id子弹时该索引才会被使用。
  6. 空间索引:使用SPATIAL参数可以设置索引为空间索引。空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率。MySQL中的空间数据类型包括GEOMETRY和POINT、LINESTRING和POLYGON等。