【日积月累】MySQL索引理解与使用

news2024/11/27 12:36:28

主图==========

目录

MySql索引理解与使用

  • 1.前言
  • 2.MyISAM和InnoDB 实现B+Tree的不同
  • 3.常见的索引
    • 3.1按照Navicat创建MySQL索类型
      • 3.1.1普通索引(Normal Index)
      • 3.1.2唯一索引(Unique Index)
      • 3.1.3全文索引(Fulltext Index)
      • 3.1.4空间索引(Spatial Index)
    • 3.2 按照底层存储方式
      • 3.2.1 聚蔟索引(聚集索引)
      • 3.2.1 非聚蔟索引(非聚集索引)
    • 3.3 按照数据结构维度划分
      • 3.3.1 BTree索引
      • 3.3.2 哈希索引
      • 3.3.3 全文索引
  • 4.创建索引
    • 4.1通过Navicat可视化设计表创建
    • 4.2通过SQL语句创建
  • 参考


文章所属专区 超链接


1.前言

MySQL 索引是一种数据结构,用于加快数据库查询的速度和性能,它可以大大提高MySQL的检索速度,相当于一本字典中的目录,使得他可以按照拼音 部首 笔画等方式快速检索,索引也是一样的作用,其本质是一个排序好的数据结构。

索引底层数据结构存在很多种类型,常见的索引结构有: B 树, B+树 和 Hash、红黑树。在 MySQL 中,
无论是 Innodb 还是MyIsam,都使用了 B+树作为索引结构

2.MyISAM和InnoDB 实现B+Tree的不同

  1. 在MyISAM引擎中,索引文件和数据文件是分离的,称为非聚蔟索引
  2. 在InnoDB 引擎中,数据文件本身就是索引文件,称为聚蔟索引

下面的内容整理自《Java 工程师修炼之道》
MyISAM 引擎中,B+Tree 叶节点的 data 域存放的是数据记录的地址。在索引检索的时候,首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为“非聚簇索引(非聚集索引)”。InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按 B+Tree 组织的一个索引结构,树的叶节点 data 域保存了完整的数据记录。这个索引的 key 是数据表的主键,因此 InnoDB 表数据文件本身就是主索引。这被称为“聚簇索引(聚集索引)”,而其余的索引都作为 辅助索引 ,辅助索引的 data 域存储相应记录主键的值而不是地址,这也是和 MyISAM 不同的地方。在根据主索引搜索时,直接找到 key 所在的节点即可取出数据;在根据辅助索引查找时,则需要先取出主键的值,再走一遍主索引。 因此,在设计表的时候,不建议使用过长的字段作为主键,也不建议使用非单调的字段作为主键,这样会造成主索引频繁分裂。

3.常见的索引

3.1按照Navicat创建MySQL索类型

3.1.1普通索引(Normal Index)

普通索引是最常见的索引类型,用于加快搜索速度。它可以在一个或多个列上创建,并且允许重复的值。

3.1.2唯一索引(Unique Index)

唯一索引要求索引列的值是唯一的,不允许重复。它可以用于确保数据的唯一性,并且在加速查找时也起到了作用。

3.1.3全文索引(Fulltext Index)

全文索引用于在文本类型的列上进行全文搜索。它可以提供更高效的文本搜索功能,适用于处理较大的文本数据。

3.1.4空间索引(Spatial Index)

空间索引用于处理具有空间属性的数据,例如地理位置信息。它可以加速空间数据的查询,如范围查询和交叉查询。

3.2 按照底层存储方式

3.2.1 聚蔟索引(聚集索引)

索引结构和数据一起存放的索引,InnoDB 中的主键索引就属于聚簇索引。

3.2.1 非聚蔟索引(非聚集索引)

索引结构和数据分开存放的索引,二级索引(辅助索引)就属于非聚簇索引。

3.3 按照数据结构维度划分

3.3.1 BTree索引

Mysql里默认和最常用的索引类型,只有叶子结点存储value,非叶子结点只有指针和key

3.3.2 哈希索引

类似键值对的形式,一次即可定位。

3.3.3 全文索引

对文本的内容进行分词,进行搜索。目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。

4.创建索引

4.1通过Navicat可视化设计表创建

在这里插入图片描述
注意:InnoDB默认使用B-Tree索引,而MyISAM默认不支持Hash索引,只支持B-Tree索引。

4.2通过SQL语句创建

使用 CREATE INDEX 语句可以创建普通索引
CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], …);

ALTER TABLE 创建索引的语法
ALTER TABLE table_name
ADD INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], …);

创建表的时候,你可以在 CREATE TABLE 语句中直接指定索引
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
…,
INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], …)
);

参考

菜鸟教程-MySQL 索引
https://blog.csdn.net/Lg632/article/details/103156500
MySQL索引详解
mysql的索引方法btree和hash的区别

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1182335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBootWeb案例——Tlias智能学习辅助系统(2)

前一节已经实现了员工信息的条件分页查询以及删除操作。 这一节继续完成新增员工、文件上传、修改员工、配置文件的功能。 目录 新增员工文件上传简介本地存储阿里云OSS介绍与入门项目集成阿里云(难点) 修改员工查询回显修改员工 配置文件参数配置化(Value)yml配置文件Configur…

边玩边学!Python随机生成迷宫游戏的代码简单示例。

文章目录 前言一、生成迷宫的二维数组二、深度优先搜索算法寻找通路三、生成迷宫的随机算法四、使用Pygame显示迷宫五、随机生成迷宫游戏完整代码关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①P…

软考:中级软件设计师:2022年下半年上午软件设计师考题

软考:中级软件设计师:2022年下半年上午软件设计师考题 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都…

Scalable diffusion models with transformers

扩散模型之DiT:纯Transformer架构 - 知乎扩散模型大部分是采用 UNet架构来进行建模,UNet可以实现输出和输入一样维度,所以天然适合扩散模型。扩散模型使用的UNet除了包含基于残差的卷积模块,同时也往往采用self-attention。自从Vi…

OpenAI首席科学家:ChatGPT已经出现意识,人类未来将与AI融合

OpenAI首席科学家在最近的专访中抛出了很多惊人言论。在他看来,ChatGPT背后的神经网络已经产生了意识,而且未来人类会与人工智能融合起来,出现新的形态。而他现在工作的重点,已经不是去创建那个必然会出现的通用人工智能&#xff…

webgoat-Request Forgeries 请求伪造

(A8:2013) Request Forgeries Cross-Site Request Forgeries 跨站请求伪造,又称一键攻击或会话骑乘,简称CSRF (有时发音为 sea-surf)或 XSRF,是一种恶意利用网站,其中传输未经授权的命令 来自网站信任的用…

WebDAV之π-Disk派盘 + Keepass2Android

推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。 Keepass2Android 目前安全方面最大的问题之一是大多数人几乎在任何地方都使用通用…

第一百六十六回 如何创建以图片为背景的页面

文章目录 1. 概念介绍2. 实现方法2.1 整体思路2.2 具体步骤 3. 示例代码4. 内容总结 我们在上一章回中介绍了WheelChoose组件相关的内容,本章回中将介绍如何创建以图片为背景的页面,闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在实际…

SQL注入漏洞及五大手法

SQL注入漏洞 文章目录 SQL注入漏洞万能用户名 SQL注入分类两大基本类型五大手法提交参数方式注入点的位置 注入点判断SQL注入的危害sql漏洞挖掘Mysql库中的注释 SQL注入基本手法联合查询条件 报错注入group byextractvalueupdataxml 布尔盲注延时注入 案例获取cms网站后台管理员…

k8s 目录和文件挂载

k8s生产中常用的volumes挂载方式有:hostPath、pv,pvc、nfs 1.hostPath挂载 hostPath是将主机节点文件系统上的文件或目录挂载到Pod 中,同时pod中的目录或者文件也会实时存在宿主机上,如果pod删除,hostpath中的文…

字符函数和字符串函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 字符分类函数 2. 字符转换函数 3. strlen的使用和模拟实现 3.1strlen的使用: 3.2strlen的模拟实现: 4. strcpy的使用和模拟实现 4.1strc…

YOLOv8-Cls推理详解及部署实现

目录 前言一、YOLOv8-Cls推理(Python)1. YOLOv8-Cls预测2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 二、YOLOv8-Cls推理(C)1. ONNX导出2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 三、YOLOv8-Cls部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. 源码修…

网络安全深入学习第八课——代理与端口转发

文章目录 一、什么是代理二、正向代理三、反向代理四、正向和反向代理模拟复现 一、什么是代理 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。 形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览…

​软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】 课本里章节里所有蓝色字体的思维导图

解决 win11 vmware 中centos 网络不能访问外网

解决 win11 vmware 中centos 网络不能访问外网 1、进入win11 高级设置,找到centos 虚拟机使用的网卡 2、看网卡的其他属性 3、按照红圈部分,配置成一样的就行 4、进入到虚拟机配置中,配置成如图一样的NAT模式 5、再进入编辑 -》虚拟网络编辑…

30道高频Vue面试题快问快答

面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过程中,面试官通常会使用快问快答的方式来快速评估面试者的基础知识、思维能力和反应速度。 这种情景下,面试官会提出一系列简短的问题,并期望面试者能够迅速做出回答或提供简洁明…

仿真实现lio_sam建图和ndt_matching定位

文章目录 一、仿真环境二、lio_sam建图1.修改配置文件2.开始建图 三、ndt_matching定位1.新建启动文件2.启动 总结 一、仿真环境 使用现有开源的仿真环境—从零开始搭建一台ROS开源迷你无人车,作者已经配置好小车模型以及gazebo环境,imu频率已改为200HZ…

Leetcode—2586.统计范围内的元音字符串数【简单】

2023每日刷题&#xff08;二十二&#xff09; Leetcode—2586.统计范围内的元音字符串数 实现代码 class Solution { public:int vowelStrings(vector<string>& words, int left, int right) {int ans 0;for(int i left; i < right; i) {string s words[i];i…

原子化 CSS 真能减少体积么?

前言 最近看到这样一篇文章&#xff1a;《要喷也得先做做功课吧&#xff1f;驳Tailwind不好论》 个人觉得说的还是有一定道理的&#xff0c;就是该作者的语气态度可能稍微冲了点&#xff1a; 不过他说的确实有道理&#xff0c;如果这种原子化工具真的如评论区里那帮人说的那么…

苹果手机的警示!电子产品无线升级=救命的机会

大家日常使用手机都知道&#xff0c;手机系统和软件三天两头就收到更新提醒。 只要用户手机联网&#xff0c;就可以想更新就更新&#xff0c;觉得原本使用顺手也可以不更新。 可各大厂商的初衷是好的&#xff0c;希望改善系统的一些bug问题&#xff0c;也会给我们带来一些全新功…