• MySQL 索引


    MySQL 索引

    存储方式区分(物理上的区分)

    B+树(tree) 索引

    B+树索引又称为 BTREE 索引,``目前大部分的索引都是采用 B+树索引来存储的`

    包含的组件

    1. 叶子节点

      包含的内容是:

      表里面的数据行

      指向下一个叶子节点的指针

    2. 分支节点

      包含的内容是:

      其他的分支节点或叶子节点

    3. 根节点

      包含的内容是:

      根节点

    本数据结构的应用

    表中的每一行,都会在(B+tree)索引上对应一个值, 因此吗,在表进行数据从的查询时,

    就可已根据(B+tree)上的索引值确定表中的数据的所在行

    哈希索引(Hash)

    哈希

    也可以翻译为散列

    概念:将任意长度的输入(或者叫做映射 pre-image) 通过散列算法转换成固定长度的输出,该输出的值----就是散列值

    哈希索引

    目前MySQL仅仅MEMORY引擎(利用内存存取的引擎)支持该索引

    哈希索引并不是如同B+tree索引的数据结构的方式来查找数据,

    而是直接利用散列值(哈希值)计算来获取数据

    逻辑区别

    逻辑区别,主要是根据索引的用途来区分,共5类

    1. 普通索引:基本索引,提高访问速度 KEY INDEX
    2. 唯一索引:基本索引,避免数据重复 UNIQUE KEY
    3. 主键索引:专门为主键字段创建的特殊索引 PRIMARY KEY
    4. 空间索引:对空间数据类型创建的特殊索引
    5. 全文索引:用于查找文本中的关键字,只有MYISAM存储引擎支持 FULLTEXT

    普通索引

    • MySQL中最基本的索引,没有任何的限制,唯一的任务就是加快系统对数据的访问速度
    • 普通索引允许在定义索引的列中插入重复值 空值

    为表 student 表的 id 列建立一个索引 index_id

    create index index_id on student(id);
    

    主键索引

    一张表只能有一个主键索引

    唯一索引

    可以定义到多个里面

    索引的实际操作

    显示所有的索引信息

    show index from student;
    

    image-20210106122739185

    增加一个全文索引

    alter table student add fulltext index student(stuName);
    

    image-20210106123158028

    利用全文索引匹配查询

    explain select * from student where match(stuName) aginst('事务');
    

    可以看到,加入全文索引后,与不加全文索引后,所执行的查询类型并不一样

    未加全文索引

    image-20210106124258831

    加入了全文索引

    image-20210106124400689

  • 相关阅读:
    python学习之模块(pip),列表生成式,模块操作mysql,excel
    python学习之非空即为真,函数,集合,解包与打包
    配置虚拟机和网络配置
    python学习之文件读写,序列化(json,pickle,shelve)
    python学习之列表,元祖,字典
    盒子内部文字超出不换行
    织梦dedecms文章发布日期时间调用标签大全
    贝塞尔曲线值
    CSS解决border影响元素宽高的问题(box-sizing属性)
    pc建站自适应
  • 原文地址:https://www.cnblogs.com/JQ04/p/14987880.html
Copyright © 2020-2023  润新知