一、索引是什么
索引好比是一本书前面的目录,能加快数据库的查询速度。是对数据库表中一或多个列的值进行排序的结构,使用索引可快速访问数据库表中的特定信息。
索引可以加快对表中记录的查找和排序,大大提高系统性能:
(1)通过创建唯一索引可以保证数据库表中每行数据的唯一性;
(2)可以大大加快数据库的检索速度,这也是创建索引的主要原因;
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义;
(4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间;
(5)通过使用索引可以在查询过程中使用优化隐藏器,提高系统性能;
创建索引有利也有许多不利的方面:
(1)创建索引增加了数据库的物理空间,除了数据表占数据空间外,每个索引还要占一定的物理空间;
(2)创建索引和维护索引都要耗费时间,同时这种时间随着数据量的增加而增加;
(3)当对表中数据进行增加、删除、修改时,索引也需要动态维护,这样就降低了数据的维护速度;
二、索引分类
索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
根据数据库的功能,可以在数据库中创建三种索引:
(1)唯一索引:不允许其中任何两行具有相同索引值的索引
(2)主键索引:数据库表经常有一列或多列组合,其值唯一标识表中的每一行,称之为表的主键。
(3)聚集索引:表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。
聚集索引和非聚集索引的区别,如字典默认按字母顺序排序,读者如知道某个字的读音可根据字母顺序快速定位。因此聚集索引和表的内容是在一起的。如读者需查询某个生僻字,则需按字典前面的索引,举例按偏旁进行定位,找到该字对应的页数,再打开对应页数找到该字。这种通过两个地方而查询到某个字的方式就如非聚集索引。