ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL 索引

2021-07-08 20:04:28  阅读:174  来源: 互联网

标签:index student 全文索引 索引 哈希 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

标签:index,student,全文索引,索引,哈希,MySQL,节点
来源: https://www.cnblogs.com/JQ04/p/14987880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有