数据库学习笔记「索引」

索引的作用与建立索引的方法

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的数据进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单

索引就像书的目录, 通过书的目录就准确的定位到了书籍具体的内容,加索引能使查询变快

create index index_name on table_name(colum_name);

在数据库中建立索引主要有以下作用:

  1. 快速取数据
  2. 保证数据记录的唯一性
  3. 实现表与表之间的参照完整性
  4. 在使用ORDER BYGROUP BY子句进行数据检索时,可以减少排序和分组的时间

加索引后会使查询变快的原因

主流的RDBMS都是把平衡树当做数据表默认的索引数据结构

平衡树(非二叉树)B树、B+树

平衡树的查找次数(复杂度)

\[log_{树的分叉数}^{记录总数} = 查找次数 \]

假如一张表有一亿条数据 ,需要查找其中某一条数据,最坏的情况下需要匹配一亿次才能得到结果

如果把这张表转换成平衡树结构,假设这棵树有10层,那么只需要10次IO开销就能查找到所需要的数据, 速度以指数级别提升

10是树的分叉数, 查找次数从亿降到了个位数。

加索引后会使写入、修改、删除变慢的原因

平衡树这个结构必须一直维持在一个正确的状态

增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构

在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销

posted @ 2021-03-11 20:38  VanGy  阅读(162)  评论(0编辑  收藏  举报