1.索引的含义和特点
(1)索引是单独的、存储在磁盘上的数据结构、他们包含着对数据表里所有记录的引用指针。
(2)通过建立唯一索引,可以保证数据库表中每一行数据的唯一性。
(3)可以大大的加快数据的查询速度;
(4)加速表与表之间的联系;
(5)减少查询中分组和排序的时间;
(6)创建索引的维护索引需要耗费时间、并且随着数据量的增加所耗费的时间也会增加;
(7)索引需要占据磁盘空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
(8)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度;
2.索引的分类
(1)普通索引的唯一索引
普通索引是MySQL中的基本索引,允许在定义索引的列中插入重复值和空值;
唯一索引,索引列的值必须唯一,但是允许有空值,如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。
(2)单列索引和组合索引
单列索引即一个索引只包含单个列,一个表可以有多个单列索引。
组合索引指在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。
(3)全文索引
全文索引类型为fulltext,在定义索引的列上支持值的全文查找,允许在这些索引列中掺入空值和重复值。全文索引可以在char、varchar、text、类型的列上创建。
(4)空间索引
空间索引是对空间数据类型字段建立的索引。
3.索引的设计原则
(1)索引并非是越多越好,一个表中如果存在大量的索引,不仅占用磁盘空间,而且会影响插入、删除、更新语句。
(2)避免对经常更新的表进行过多的索引,并且索引的列尽可能少。
(3)数据量小的最好不要使用索引。
(4)在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。