8.1 索引简介
8.1.1 索引的含义和特点
优点:
通过创建唯一索引,可以保证表中每一行数据的唯一性;
可以打打加快数据的查询速度,这也是创建索引的主要原因;
可以实现数据的参考完整性方面,可以加速表和表之间的连接;
在使用分组和排序子句进行查询时,可以显著减少查询中分组和排序的时间;
缺点:
创建索引和维护索引要消耗时间,并且随着数据量的增加所耗费的时间也会增加;
索引需要占磁盘空间,除了数据表站数据空间之外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸;
当对表中的数据进行增加、修改和删除的时候,索引也要动态的维护,这样就降低了数据的维护速度;
8.1.2 索引的分类
普通索引和唯一索引
普通索引:基本索引,允许重复值与空值
唯一索引:值必须唯一,但允许有空值,如果是组合索引,则列值的组合必须唯一。主键索引是特殊的唯一索引,不允许有空值
单列索引和组合索引
单列索引:一个索只包含一个单列
组合索引:表中多个字段组合上创建索引,只有在查询条件中使用了这些字段的左字段时,索引才会被使用。使用组合索引是遵循最左前缀集合;
全文索引
类型为
FULLTEXT,在定义索引的列上支持值的全文查找,允许重复与空值,全文索引可以在CHAR、VARCHAR和TEXT类型的列上创建(MySQL只用MyISAM存储引擎支持)空间索引
是对空间数据类型的字段建立的索引,
MySQL中的空间数据类型有4中,分别是GEOMETRY、POINT、LINESTRING和POLYGON。MySQL使用SPATIAL关键字进行扩展,使得能够用于创建正轨索引类似的语法创建空间索引,对应的列必须声明NOT NULL(MySQL只用MyISAM存储引擎支持)
8.1.3 索引的设计原则
并非越多越好,大量的索引不仅占用磁盘,还会影响新增,更新,删除的性能;
避免对经常更新的表加过多的索引,并且索引中的列尽可能少;对经常查询的字段应该创建索引,但要避免添加不必要的字段;
数据量小的表最好不要使用索引;
在条件表达式中经常用到的不同值较多的裂伤简历索引,不同值较少的就不要简历索引。比如性别,就不用简历索引;
当唯一性是某种数据本身特征的时候,指定唯一索引;
在拼单进行排序或分组的裂伤创建索引,如果待排序的列有多个,可以在这些列上简历组合索引.
最后更新于
这有帮助吗?