数据库基础——索引

数据库架构

RDBMS

  1. 索引模块

问题:

  1. 为什么要使用索引

    快速查询数据

  2. 什么样的信息能成为索引

    主键、唯一键以及普通键等

  3. 索引的数据结构

    生成索引,建立二叉查找树进行二分查找

    生成索引,建立B-Tree结构进行查找

    生成索引,建立B+-Tree结构进行查找

    生成索引,建立Hash结构进行查找

二叉查找树

是平衡二叉树。左右子树高度差不能超过1,用二分查找。时间复杂度:O(logn) 例:

    缺点,当删除节点再插入节点时,时间复杂度变为O(n)。例:

的确,可以每插入一个数据再进行旋转树,再次平衡。但是会有第二个问题。影响程序运行的问题主要在I/O操作,每次读入一个节点就会I/O操作。但是二叉树只有两个节点,如果数据块很多,树的深度就会很大,就会进行很多次I/O操作,查询的性能就会比全表扫描慢的多,无法优化查询。

运用B-Tree

结构:(3阶B树)

定义:

根节点至少包含两个孩子

树中每个节点最多含有m个孩子(m>=2)

除根节点叶节点外,其他每个节点至少有ceil(m/2)个孩子

所有叶子结点都位于同一层

运用B+-Tree

    结构:

结论:

Hash索引

    

密集索引和稀疏索引

    

    

    Mysql主要有两种存储引擎,MyISAM(均是稀疏索引)和InnoDB(有且仅有一个密集索引)

  默认是MyISAM

    InnoDB索引和数据是存在一起的(一个文件),MyASM是分开的。

    

    

    索引额外的问题

    1.

    

 

index all 全表扫描

 

 

 

2.最左匹配原则的成因

posted @ 2019-03-25 23:28  夏延  阅读(258)  评论(0编辑  收藏  举报