• MySQL索引


    Mysql流程:

    不同的存储引擎,数据文件和索引文件存放的位置是不同的,因此有了分类

    聚簇索引

            1、数据和文件放在一起innodb

            2、mysql/data/    文件路径下存在两种后缀

                    .frm:存放的是表结构

                    .ibd:存放数据文件和索引文件

            注意:mysql的innodb存储引擎默认情况下会把所有的数据文件放到表空间中,不会为每一个单独的表保存一份数据文件,如果需要将每一个表单独使用文件保存,设置

    set  global  innodb_file_per_table=on;

    非聚簇索引:

            1、数据和索引单独一个文件:MyISAM

             .frm:存放表结构

            .MYI:存放索引数据

            .MYD:存放实际数据

    索引是什么:

    hash表:

    哈希表可以完成索引的存储,每次在添加索引的时候需要执行列的hash值,取模运算后计算出下标,将元素插入下标位置即可

    使用场景:

            等值查询

            表中的数据是无序数据(范围查找的时候比较浪费时间,需要挨个遍历操作)

             hash表在使用的时候需要将全部的数据加载到内存,比较浪费内存空间,也不是很合适

    数:

    在树的结构中,左子树必须小于根节点,右子树必须大于根节点,如果是多叉树的话,从左到右是有序的

    多叉树:在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。

    二叉树:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。

    AVL树:一个严格意义上的平衡树,最高子树和最低子树高度之差不能超过1因此在插入的时候会进行1到N次的旋转,严重影响插入的性能

    红黑树:红黑树是AVL树的一个升级,损失了部分的性能来提升插入的性能,在红黑树中最低子树跟最高子树之差小于2被即可,在插入的时候,不需要进行N多次的旋转操作,而且还加入了变色的特性,来满足插入和查询的平衡

    二叉树及其N多变种都不能支撑索引,原因是输的深度无法控制或者插入数据的性能比较低

    B树:

    缺点:

            1、每个节点都有key,同时包含data,而每页存储空间有限,如果data比较大的话会导致每个节点存储的key数量变小

            2、当存储的数据很大的时候会导致深度较大,增大查询时IO次数,进而影响查询性能

    B+树:

    在B树上进行改进,将数据都放到第三层里检索

    索引的分类

    主键索引:

            主键索引是一种唯一索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键

    唯一索引:

            索引列的所有值都只能出现一次,即必须唯一,值可以为空

    普通索引:

            基本的索引类型,值可以为空,没有唯一性的限制(覆盖索引

    全文索引:

            MyISAM支持,Innodb在5.6之后支持

            检索某些对应关键字

    组合索引:

            多列值组合成一个索引,专门用于组合搜索(最左匹配原则

  • 相关阅读:
    【JavaScript复习四】对象简介
    vue electron 下载Vue-devtools ChromeExtension扩展失败
    Python LeetCode:50 个算法编程面试题
    Redis——SpringBoot整合、持久化、集群(主从、哨兵、分片)
    康耐视visionpro定位引导标定简介及方法
    读取XML的几种方式
    JVM虚拟机:对象在内存中的存储布局
    一文看懂推荐系统:物品冷启06:冷启的AB测试
    若依多租户集成浅析(基于数据源隔离)
    Sulfo-CY5 DBCO的荧光特点、激发发射-星戈瑞
  • 原文地址:https://blog.csdn.net/qq_58000413/article/details/127573497