什么是索引?
简单点说 ,在关系数据库中,索引是一种单独的,物理的对数据库表中一列或者多列的值进行排序的一种存储结构。相当于图书的目录,可以根据目录中的页码快速找到需要的内容。
索引提供指向存储在表中的指定列的数据值的指针, 根据你指定的排序顺序对这些指针排序。数据库使用索引找到特定值,然后顺指针找到包含该值得行。
当表中有大量记录时,对表查询,如果是全表搜索,是将所有记录一一取出,和查询条件对比,然后返回满足条件的记录,这样消耗大量数据库系统时间,并造成大量磁盘I/O。 第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID 快速找到表中对应的记录。
索引是为了加速对表中的数据行的检索而创建的一种分散的存储结构。索引页面中的行都有逻辑指针。
索引的作用?
1.快速读取数据
2.保证数据记录的唯一性
3.实现表与表之间的参照完整性
4.在使用orderby ,group by子句进行检索时,索引可以减少排序和分组的时间。
优点:
1.大大加快数据的检索速度
2.创建唯一性索引,保证数据库中的每一行数据的唯一性。
3.加速表与表之间的连接
4.在使用分组和排序进行检索时,可以显著的减少查询的时间。
缺点:
1.索引占物理空间,
2.当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
索引类型:
单列索引、唯一索引、主键索引和聚集索引。
1.普通索引:没有唯一性的限制,允许为空。可以直接创建create index name on tablename
修改表的时候 alert table tablename add index name ; 创建表的时候 create table tablename( ..index name col)
2.唯一索引:unique index 没有任何两行具有相同索引值。
3.主键索引:数据库中的一列或者列组合的值 唯一标识表中的每一行,该列为表的主键。一个表只能有一个主键,不允许为空,一般在建表的时候同事创建。
网友评论