mysql的索引分类

news2024/12/27 18:27:55

索引分类

MySQL 数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。
分类
含义
特点
关键字
主键
索引
针对于表中主键创建的索引
默认自动创建 , 只能
有一个
PRIMARY
唯一
索引
避免同一个表中某数据列中的值重复
可以有多个
UNIQUE
常规
索引
快速定位特定数据
可以有多个
全文
索引
全文索引查找的是文本中的关键词,而不是比较索引中的值
可以有多个
FULLTEXT

聚集索引、二级索引

InnoDB 存储引擎中,根据索引的存储形式,又可以分为以下两种
分类
含义
特点
特点
聚集索引 (Clustered Index)
将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据
必须有 , 而且只
有一个
二级索引 (Secondary Index)将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键
将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键
可以存在多个
聚集索引选取规则
  1. 如果存在主键,主键索引就是聚集索引。
  2. 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
  3. 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索

  1. 聚集索引的叶子节点下挂的是这一行的数据 。
  2. 二级索引的叶子节点下挂的是该字段值对应的主键值。

当我们执行如下的SQL语句时 select *from user where name='Arm'; 具体过程如下:

  1. 由于是根据name字段进行查询,所以先根据name='Arm'name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 Arm 对应的主键值 10
  2. 由于查询返回的数据是*,所以此时,还需要根据主键值10,到聚集索引中查找10对应的记录,最终找到10对应的行row
  3. 最终拿到这一行的数据,直接返回即可。
回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取
数据的方式,就称之为回表查询。

 问题

以下两条 SQL 语句,那个执行效率高 ? 为什么?(备注 : id 为主键, name 字段创建的有索引;)
A. select * from user where id = 10 ;
B. select * from user where name = 'Arm' ;
解答:
A 语句的执行性能要高于 B 语句。
因为 A 语句直接走聚集索引,直接返回数据。 而 B 语句需要先查询 name 字段的二级索引,然
后再查询聚集索引,也就是需要进行回表查询。

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

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

相关文章

C语言“牵手”速卖通商品详情数据方法,速卖通商品详情API接口,速卖通API申请指南

速卖通是全球最大的自营式电商企业之一,在线销售计算机、手机及其它数码产品、家电、汽车配件、服装与鞋类、奢侈品、家居与家庭用品、化妆品与其它个人护理用品、食品与营养品、书籍与其它媒体产品、母婴用品与玩具、体育与健身器材以及虚拟商品等。 速卖通平台的…

nginx日志、nginx访问控制、nginx优化

总结 nginx监控 内存,网络,磁盘,cpu 对nginx监控可以监控什么? 1、监控nginx服务存活状况(ss -antpl 、systemctl status nginx 、pa aux | grep nginx) 2、对nginx的运行状态进行监控 3、 监控nginx的监…

进程的同步与互斥

相关概念 临界资源与临界区 临界资源:同一时刻只能由一个进程使用的资源。 如打印机、磁带机、绘图仪等物理设备;由不同进程共享的消息队列、变量、数据、文件等软件资源 临界区:程序中访问临界资源的那一部分代码 进入区、退出区、剩余区&a…

六、MySql表的增删改查

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 文章目录 一、Create(一)语法(二)案例(三)插入情况1.单行数据 全列插入2.多行数据 指定…

Matlab之数组字符串函数汇总

一、前言 在MATLAB中,数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用? 1、使用单引号或双引号括起来的字符序列 例…

日常开发小汇总(5)数组克隆、伪数组转换为真数组、随机排序

slice 切割数组实现克隆是浅拷贝 let arr [1,2, {name:1}] let newarr arr.slice(0); console.log(newarr) //[1,2, {name:1}] newarr[2].name 666; console.log(arr[2].name);//666 JSON实现克隆 深拷贝 let arr [1,2, {name:1}] let newarr JSON.parse( JSON.stringi…

【JS面试题】如何通过闭包漏洞在外部修改函数中的变量

✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 前端面试题 文章目录 什么是闭包例 如何在函数外部修改闭包中变量 什么是闭包 闭包这个东西对新…

linux--进程通信--管道通信

IPC是各种进程间通信方式的统称。 进程间通信:是指在不同进程之间传播或交换信息。 IPC的方式通常有: 单机:管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、 多机:Socket、Streams等 1、管道…

【计算机组成原理】十个问题带你走进计算机组成的世界

十个问题带你走进计算机组成的世界 你知道 a 1 2 这条代码是怎么被 CPU 执行的吗? 在计算机中,数据和指令是分开区域存放的,存放指令的区域的地方称为正文段,存放数据的区域称为数据段。 例如下图中,数据1和数据2…

Redis配置

关系型数据库和非关系型数据库 ①了解关系和非关系 关系型数据库 一个结构化的数据库,创建在关系模型基础上,一般面向于记录,包括Oracle、MySQL、SQL Server、Microsoft Access、DB2、postgreSQL等 非关系型数据库 除了主流的关系型数据库…

java 歌词解析 源代码, 在windows10下调试运行成功。

需要两个素材。 歌词与音乐.wav package week3.exam6;public class Info {private final String info;public Info(String info){this.infoinfo;}public String getInfo() {return info;}public String toString(){return info;} }package week3.exam6;public class Lyric ext…

华为云新用户云服务器优惠价格表

华为云服务器作为业界领先的云服务提供商之一,一直致力于为全球用户提供高效、稳定、安全的云服务。为了帮助新用户更好地了解华为云服务器的价格和优惠活动,本文将详细介绍华为云服务器对新用户的优惠价格表。 一、华为云耀云服务器L实例价格表 华为云…

JavaScript基础知识09——数据类型

哈喽,大家好啊,这里是雷工笔记,我是雷工。 数据类型比较常见,无论是对程序员,还是电气工程师来说,都再熟悉不过了,这里跟着教程了解一下,主要看跟自己以往在其他PLC,C#&a…

2023-09-09 LeetCode每日一题(课程表)

2023-09-09每日一题 一、题目编号 207. 课程表二、题目链接 点击跳转到题目位置 三、题目描述 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中…

【牛客面试必刷TOP101】Day2.判断链表中是否有环和链表中倒数最后k个结点

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff…

python-jieba库

jieba库,python提供的中文分词函数库的第三方库,它可以将一段中文文本分割成中文词语序列。 安装jieba库 pip install jiebajieba的三个模式 全模式 - - - jieba.lcut(s,cut_allTrue) - - - 速度非常快,但有冗余数据 精确模式(…

窗口延时、侧输出流数据处理

一 、 AllowedLateness API 延时关闭窗口 AllowedLateness 方法需要基于 WindowedStream 调用。AllowedLateness 需要设置一个延时时间,注意这个时间决定了窗口真正关闭的时间,而且是加上WaterMark的时间,例如 WaterMark的延时时间为2s&…

嵌入式开发-绪论

目录 一.什么是嵌入式 1.1硬件系统 1.2软件系统 二.嵌入式应用场景 2.1消费电子 2.1.1智能家居 2.1.2影音 2.1.3家用电器 2.1.4玩具游戏机 2.2通信领域 2.2.1对讲机 2.2.2手机 2.2.3卫星 2.2.4雷达 2.3控制领域 2.3.1机器人 2.3.2采集器PLC 2.4金融 2.4.1POS…

快速文件复制与删除工具,将复制时文件夹里的原文件删除掉

无论是工作还是生活,我们都离不开文件的复制和管理。然而,手动复制文件不仅费时费力,而且容易出错。现在,我们为您推荐一款快速文件复制与删除工具,让您的文件管理更加高效! 首先,我们要进入文…

MybatisPlus分页插件使用

一. 效果展示 二. 代码编写 2.1 pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency>2.2 添加配置类 Configuration MapperScan(…