zoukankan      html  css  js  c++  java
  • 关于索引

    关于索引

    index--目录,索引,导航

    相当于一个字典目录,查‘爱’,目录页查--A--ai

    主键自动添加索引:

    1,能够通过主键查询的尽量通过主键查询,效率高

    2,索引和表相同,都存储在硬盘的文件中

    3,索引和表相同都是一个对象

    创建索引

    1,建表的时候可以加索引

    create table tmep(

    id int primary key auto_increment,

    idcard varchar(20) not null unique,

    index idx_idcard(idcard)

    );

    2,语法创建

    create index 索引名称 on 表名(列名)

    create unique index 索引名称 on 表名(列名)

     

    查看索引

    show index from table(表名);

     

    注意:使用索引,不要使用通配符*

    删除索引

    drop index 索引名 on 表名

    drop index idcard on tmep;

    如上查看索引中idcard索引消失了

     

    索引原理

    索引是帮助mysql高效获取数据的排好序的数据结构

    二叉树存储数据进行检索:

     

    地址编号用二叉树进行存储:

     

    红黑数存储数据:

     

    b_tree存储数据

     

    b+_tree存储数据

     

    两种树结构的区别

    b_tree 树结构

    1,叶子节点具有相同深度,叶子节点指针为空

    2,所有索引不重复

    3,节点中的数据从左往右依次递增

    mysql采用b+tree结构,在叶子节点存储所有数据

    1,非叶子节点不存储data,只存储索引(冗余),可以放很多列

    2,叶子节点包含所有索引字段

    3,叶子节点指针链接,提高区域访问性能

     

    b+tree存储节点

    b+tree中的一层层级节点,称为一页数据,规定是16kb大小,16484byte大小

    以bigint-8byte+ 地址存储字段-6byte = 14byte

    16384/14 = 1170个【索引+地址冗余】节点

     

    索引存储

    高版本的mysql基本上会把非叶子节点全部存储在内存中,内存io要比磁盘io快的多,只有最后一步从磁盘上io一下,性能损耗可以理解,但是多表关联查询,上千万的数据还是要分库分表。

     

    联合索引

    联合索引就是把每个单节点单值结构,处理成多值一个节点,上下结构

  • 相关阅读:
    mysql锁表与解锁
    问题汇总
    安装一台Centos7桌面版的跳板机
    Centos7二进制部署k8s-v1.20.2 ipvs版本(部署mysql、nacos)
    Centos7二进制部署k8s-v1.20.2 ipvs版本(Prometheus监控k8s)
    CV2 安装异常
    PostgreSQL VACUUM 没有效果(无法清理死元组)的原因
    SQL Server 进程运行状态解析
    mysql 几种启动和关闭mysql服务的方法和区别
    MySQL学习(九)小结(转载)
  • 原文地址:https://www.cnblogs.com/HelloM/p/13568569.html
Copyright © 2011-2022 走看看