当前位置: 首页 > news >正文

详解MySql索引

目录

一 、概念

二、使用场景 

三、索引使用 

四、索引存在问题

五、命中索引问题

六、索引执行原理 


一 、概念

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。暂时可以理解成C语言的指针,文章后面详解

二、使用场景 

  • 数据量较大,且经常对这些列进行条件查询。
  • 该数据库表的插入操作,及对这些列的修改操作频率较低。
  • 索引会占用额外的磁盘空间。

三、索引使用 

创建主键约束( PRIMARY KEY )、唯一约束( UNIQUE )、外键约束( FOREIGN KEY )时,会自动创建 对应列的索引。
  • 查看索引
show index from 表名;
  • 创建索引
create index 索引名 on 表名(字段名);
  • 删除索引
drop index 索引名 on 表名;

四、索引存在问题

  • 索引也会占用一些内存,在表数据量越大越明显
  • 索引是可以提高查询速度(前提是要命中索引,后面有解释命中索引),但是可能会拖慢增删改速度。
  • 后续如果对数据进行了增删改都要同步索引。

五、命中索引问题

索引命中规则详解:t这张表 a,b,c 三个字段组成组合索引select * from t where a=? and b=? and c=?  全命中select * from t where c=? and b=? and a=?  全命中 解析MySQL的查询优化器会自动调整where子句的条件顺序以使用适合的索引select * from t where a=?  命中a  解析:最左前缀匹配select * from t where a=? and b=?  命中a和b  解析:最左前缀匹配select * from t where a=? or b=?  一个没命中 解析or无法命中select * from t where a=? and c=?  命中a 解析:最左前缀匹配,中间没有则无法使用索引select * from t where a=? and b in ( x, y, z) and c=?  全部命中 in精确匹配可以使用索引select * from t where b=?  一个没命中  解析:最左前缀匹配原则select * from t where b=? and c=?  一个没命中  解析:最左前缀匹配原则select * from t where a=? and b like 'xxx%'   命中a和bselect * from t where a=? and b like '%xxx'  命中aselect * from t where a<? and b=?   命中a 解析这个是范围查找select * from t where a between ? and ?  and b=?  命中a和b 解析BETWEEN相当于in操作是精确匹配select * from t where a between ? and ?  and b=? and c  and between ? and ?    全部命解析中同上select * from where a-1=?   函数和表达式无法命中索引

 

六、索引执行原理 

准备测试表

-- 创建用户表
DROP TABLE IF EXISTS test_user;
CREATE TABLE test_user (id_number INT,name VARCHAR(20) comment '姓名'
,age INT comment '年龄'
,create_time timestamp comment '创建日期'
);

不加索引情况,要是查询大量数据可能死机 :

select * from test_user where id_number=556677;

为提供查询速度,创建 id_number 字段的索引:

create index idx_test_user_id_number on test_user(id_number);

换一个身份证号查询,并比较执行时间:

select * from test_user where id_number=776655;

注意我们可以看到我们如果查询的是主键,那么索引的值就是我们想要找到的值,如果我们想要获取非主键的值,我们必须根据找到的主键id去原来表中找到非主键,这种操作叫做回表 

相关文章:

详解MySql索引

目录 一 、概念 二、使用场景 三、索引使用 四、索引存在问题 五、命中索引问题 六、索引执行原理 一 、概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。暂时可以理解成C语言的指针,文章后面详解 二、使用场景 数据量较大&#xff0c;且…...

struct 和 union 的区别?

struct和union的分对应点总结 存储方式&#xff1a; struct&#xff1a;struct中的每个成员都拥有独立的内存空间。一个struct变量的总长度是其所有成员的长度之和&#xff0c;且通常会根据编译器的内存对齐规则进行适当调整。union&#xff1a;union中的所有成员共享同一段内…...

Linux - 安装 Jenkins(详细教程)

目录 前言一、简介二、安装前准备三、下载与安装四、配置镜像地址五、启动与关闭六、常用插件的安装 前言 虽然说网上有很多关于 Jenkins 安装的教程&#xff0c;但是大部分都不够详细&#xff0c;或者是需要搭配 docker 或者 k8s 等进行安装&#xff0c;对于新手小白而已&…...

【JAVA】JAVA方法的学习和创造

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…...

Rust写一个wasm入门并在rspack和vite项目中使用(一)

rust打包wasm文档 文档地址 安装cargo-generate cargo install cargo-generate 安装过程中有问题的话手动安装cargo-generate下载地址 根据自己的系统下载压缩包&#xff0c;然后解压到用户/.cargo/bind目录下&#xff0c;将解压后的文件放到该目录下即可。 创建wasm项目 …...

HTTP和HTTPS的区别,HTTPS加密原理是?

HTTP和HTTPS都是网络传输协议&#xff0c;主要用于浏览器和服务器之间的数据传输&#xff0c;但它们在数据传输的安全性、加密方式、端口等方面有所不同。 数据传输的安全性&#xff1a;HTTP是明文传输&#xff0c;数据不加密&#xff0c;容易被黑客窃听、篡改或者伪造&#x…...

基于Spring Boot+Vue的校园二手交易平台

目录 一、 绪论1.1 开发背景1.2 系统开发平台1.3 系统开发环境 二、需求分析2.1 问题分析2.2 系统可行性分析2.2.1 技术可行性2.2.2 操作可行性 2.3 系统需求分析2.3.1 学生功能需求2.3.2 管理员功能需求2.3.3游客功能需求 三、系统设计3.1 功能结构图3.2 E-R模型3.3 数据库设计…...

什么是软件开发?软件开发阶段划分是什么?并以LabVIEW为例进行说明

软件开发是一种创建、设计、编码、测试和维护应用程序、框架或其他软件组件的过程。它涉及从理解需求到设计、实现、测试、部署和最终维护的全过程。软件开发可以用来创建新的软件应用、系统软件、游戏、或开发网络应用等。 软件开发过程通常可以分为以下几个阶段&#xff1a;…...

PTAL1-006 连续因子

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…...

【Java】容器|Set、List、Map及常用API

目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合&#xff1a; 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…...

Navicat 面试题及答案整理,最新面试题

Navicat 在数据库管理中的主要用途有哪些&#xff1f; Navicat 是一款数据库管理工具&#xff0c;其主要用途包括&#xff1a; 1、多数据库支持&#xff1a; Navicat 支持多种数据库连接&#xff0c;包括 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 等&#xff0c;方便用…...

android studio 连接mumu模拟器调试

1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹&#xff0c;有一个adb.exe 可运行程序 一般指令&#xff1a; adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…...

四连通与八连通的区别 -- 图例讲解

概念 四连通区域&#xff1a;指从某个点出发&#xff0c;只能通过上、下、左、右四个方向的运动到达区域内的其他点&#xff0c;且不能跨越区域的边界。 八连通区域&#xff1a;除了上、下、左、右四个方向&#xff0c;还可以沿对角线方向&#xff08;左上、右上、左下、右下…...

关于分布式微服务数据源加密配置以及取巧方案(含自定义加密配置)

文章目录 前言Spring Cloud 第一代1、创建config server项目并加入加解密key2、启动项目&#xff0c;进行数据加密3、实际项目中的测试server Spring Cloud Alibaba低版本架构不支持&#xff0c;取巧实现无加密配置&#xff0c;联调环境问题加密数据源配置原理探究自定义加密解…...

快速了解JavaScript

1.1 javaScript 历史 创始人 布兰登 艾奇 生于1961年 在1995设计LiveScript后改名为JavaScript 1.2 javaScript 是什么类型的语言 JavaScript是一种在客户端运行的脚本语言&#xff08;不需要编译&#xff0c;由js引擎逐行解释执行&#xff09; 1.3 JavaScript可以做什么 …...

【安全类书籍-3】XSS跨站脚剖析与防御

目录 内容简介 作用 下载地址 内容简介 这本书涵盖以下几点: XSS攻击原理:解释XSS是如何利用Web应用未能有效过滤用户输入的缺陷,将恶意脚本注入到网页中,当其他用户访问时被执行,实现攻击者的目的,例如窃取用户会话凭证、实施钓鱼攻击等。 XSS分类:分为存储型XSS(…...

http postman

地址 &#xff1a; https://oaqas.lingyiitech.com:9800/auth-api/openapi/dingtalk-oa/topapi/message/corpconversation/asyncsend_v2?token40216bf0ceea8e56b778d537b20f5d23 https://oaqas.lingyiitech.com:9800/auth-api/openapi/dingtalk-oa/topapi/message/corpconve…...

[数据集][目标检测]螺丝螺母检测数据集VOC+YOLO格式2100张13类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2100 标注数量(xml文件个数)&#xff1a;2100 标注数量(txt文件个数)&#xff1a;2100 标注…...

华为鲲鹏ARM处理器920、916系列

鲲鹏处理器-鲲鹏社区 (hikunpeng.com) 产品规格 鲲鹏920系列 型号&#xff1a; 7260&#xff08;64核&#xff09;、5250&#xff08;48核&#xff09;、5220&#xff08;32核&#xff09;、3210&#xff08;24核&#xff09;7260核数64核 主频2.6GHz 内存通道8TDP功耗180W 组…...

AG32VF407 应用开发问答1

有工程师想用AG32VF407RGT6来做项目&#xff0c;同时用到CPLD和MCU&#xff0c;MCU中用到AD、DAC、CMP&#xff0c;CMP的输出内部连到CPLD上&#xff0c;因为第一次用。所以一起进行了一些技术交流&#xff0c;在此也分享给大家。 Questions1: 1、关于boot0、boot1相关的说明…...

机器人控制入门:用Pi0具身智能v1镜像5分钟搭建你的第一个动作预测Demo

机器人控制入门&#xff1a;用Pi0具身智能v1镜像5分钟搭建你的第一个动作预测Demo 1. 快速部署Pi0具身智能镜像 1.1 选择并启动镜像 在云平台镜像市场中搜索并选择"ins-pi0-independent-v1"镜像&#xff0c;点击"部署实例"按钮。首次启动大约需要1-2分钟…...

javaweb农业合作社果蔬批发农产品商城信息管理系统的设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析交易与订单模块数据分析与报表模块物流与配送模块系统管理模块技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能…...

Hotkey Detective:3分钟快速定位Windows热键冲突的终极指南

Hotkey Detective&#xff1a;3分钟快速定位Windows热键冲突的终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

AI Agent不是你以为的那样

系列&#xff1a;《AI Agent 从原理到实战 —— 解密 Claude Code 背后的工程智慧》 第1篇引言 你大概有过这样的体验&#xff1a;打开 ChatGPT&#xff0c;说一句"帮我写封邮件&#xff0c;拒绝周五的会议邀请&#xff0c;语气委婉一点"&#xff0c;几秒钟后一封措辞…...

基于Qwen3-ASR的智能会议纪要系统:从语音识别到文本摘要全流程

基于Qwen3-ASR的智能会议纪要系统&#xff1a;从语音识别到文本摘要全流程 1. 系统整体效果展示 今天给大家展示一个基于Qwen3-ASR-1.7B语音识别模型构建的智能会议纪要系统。这个系统不仅能准确识别会议中的语音内容&#xff0c;还能自动区分不同说话人&#xff0c;提取关键…...

千问3.5-2B开源可部署实践:本地GPU环境一键启用,无云服务依赖

千问3.5-2B开源可部署实践&#xff1a;本地GPU环境一键启用&#xff0c;无云服务依赖 1. 模型介绍与核心能力 千问3.5-2B是Qwen系列中的小型视觉语言模型&#xff0c;专为图片理解与文本生成任务设计。这个开源模型最大的特点是能够同时处理视觉和语言信息&#xff0c;实现真…...

Qwen3-14B私有部署效果展示:中文对话、推理、生成真实案例集

Qwen3-14B私有部署效果展示&#xff1a;中文对话、推理、生成真实案例集 1. 开箱即用的私有部署体验 Qwen3-14B私有部署镜像为开发者提供了前所未有的便捷体验。基于RTX 4090D 24GB显存环境优化&#xff0c;这个镜像真正做到了"下载即用"——无需配置复杂环境&…...

Spring AI实战:5分钟搞定豆包TTS语音合成(附完整Java代码)

Spring AI实战&#xff1a;5分钟集成豆包TTS语音合成&#xff08;附完整Java代码&#xff09; 语音合成技术正在重塑人机交互的边界。作为Java开发者&#xff0c;你可能已经注意到Spring AI生态的快速崛起——它正成为企业级AI应用开发的新标准。本文将带你用最短时间完成豆包T…...

Phi-4-mini-reasoning开源模型教育价值:高校AI课程实验设计与评估标准

Phi-4-mini-reasoning开源模型教育价值&#xff1a;高校AI课程实验设计与评估标准 1. 引言&#xff1a;AI教育的新工具 在人工智能教育领域&#xff0c;如何让学生既能理解前沿技术原理&#xff0c;又能获得实际动手能力&#xff0c;一直是教学设计的难点。Phi-4-mini-reason…...

HDRI-Generator: 环境贴图生成AI

在 3D 渲染中&#xff0c;环境光通常比模型本身更难处理。 很多开发者或设计师都有类似经验&#xff1a;即使模型质量很高&#xff0c;如果光照不合理&#xff0c;最终效果仍然会显得不真实。HDRI&#xff08;High Dynamic Range Image&#xff09;长期以来是解决这一问题的核…...