zoukankan      html  css  js  c++  java
  • 数据库基础——索引

    数据库架构

    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.最左匹配原则的成因

  • 相关阅读:
    python 特性 property
    OWASP_ZAP集成渗透测试和漏洞工具
    openvas开放式漏洞评估系统
    SSL协议(安全套接层协议)
    windows下如何查看端口,关闭端口,开启端口
    网络端口通俗的说是啥意思?
    APP安全性测试总结--网上转载
    android填满手机内存的方法
    adb push和adb install区别
    Maven打包同一个jar有不同的:版本+时间戳(解决思路)
  • 原文地址:https://www.cnblogs.com/aishanyishi/p/10597600.html
Copyright © 2011-2022 走看看