(一)索引
1.1 概念
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。在没有索引的情况下,数据库会遍历全部数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。
1.2 创建索引的好处
(1)通过创建索引,可以在查询的过程中,提高系统的性能
(2)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
(3)在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间
1.3 创建索引的坏处
(1)创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大
(2)索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大
(3)在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护
1.4应该被创建索引的列
(1)经常需要搜索的列上
(2)作为主键的列上
(3)经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
(4)经常需要根据范围进行搜索的列上
(5)经常需要排序的列上
(6)经常使用在where子句上面的列上
1.5 不应该被创建索引的列
(1)查询中很少用到的列
(2)对于那些具有很少数据值的列.比如人事表的性别列,bit数据类型的列
(3)对于那些定义为text,image的列.因为这些列的数据量相当大
(4)当对修改性能的要求远远大于搜索性能时.因为当增加索引时,会提高搜索性能,但是会降低修改性能
(二)索引的分类
2.1 按照物理存储角度分类
2.1.1 聚集索引
该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一