MySQL系列之索引入门(下)

【MySQL系列】MySQL索引事务 MySQL数据库 索引和事务部分的内容~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 阅读详情

前言

通过上文,我想各位盆友已熟悉MySQL的索引分类及其含义,那么如何合理的使用呢?
请继续围观此文,一探究竟!

在这里插入图片描述


一、创建索引

首先,我们一起学习索引是如何创建的,又有哪些方式。

1. create table

最直接的方式就是建表时创建,比如user表:

CREATE TABLE `user` (
  `user_id` varchar(8) COLLATE utf8mb4_bin NOT NULL COMMENT '用户编号',
  `user_name` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '用户名称',
  `user_type` char(3) COLLATE utf8mb4_bin NOT NULL COMMENT '用户类型',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`user_id`),
  KEY `index_user_type`(`user_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='用户表';

通过以上脚本,实现了主键索引和普通索引的定义和创建。如需指定索引类型,可按以下规则拼写:

[索引类型]UNIQUE|FULLTEXT|…
[索引关键字]INDEX|KEY
[索引名称]index_column_name([字段]column_name1,column_name2,…)

2. create index

第二种,在create table完成后,继续进行create index操作。比如:

CREATE INDEX index_user_type ON `user` (user_type);

通过以上脚本,实现了普通索引的定义和创建。如需指定索引类型,可按以下规则拼写:

[索引类型]UNIQUE|FULLTEXT|…
[索引关键字]INDEX
[索引名称]index_column_name
[索引关键字]ON
[表名]table_name ([字段]column_name1,column_name2,…)

3. alter table add index

第三种,在create table完成后,继续进行alter table add index操作。比如:

ALTER TABLE `user` ADD INDEX index_user_type(user_type);

通过以上脚本,实现了普通索引的定义和创建。如需指定索引类型,可按以下规则拼写:

ALTER TABLE
[表名]table_name
[索引关键字] ADD
[索引类型]UNIQUE|FULLTEXT|…
[索引关键字]INDEX
[索引名称]index_column_name([字段]column_name1,column_name2,…)

二、验证索引

通过创建索引操作,我们可以快速完成数据库性能的优化。但是,如果索引使用不当,也可能适得其反,无法如愿以偿。此刻,我们怎么办?请继续聚焦下一话题。

1. explain介绍

When EXPLAIN is used with an explainable statement, MySQL displays information from the optimizer about the statement execution plan. That is, MySQL explains how it would process the statement, including information about how tables are joined and in which order.

以上表述来自MySQL官方对explain的介绍,翻译后大致是:用于解释SQL的执行过程和顺序。

怎么使用呢?很简单,直接上菜:

explain select * from table_name;

2. explain解读

当我们执行explain后,会返回一个结果,比如:
在这里插入图片描述
其中,每个字段的含义如下:

字段名称字段含义
id执行序号,遵从“从大到小,从上到下"的原则
select_type查询类型,可分为Simple、Primary、Union、DEPENDENT UNION、UNION RESULT、SUBQUERY、DEPENDENT SUBQUERY、DERIVED。不同类型代表SQL的复杂度不同
table表名,可以是物理表,也可以是虚拟表
partitions查询涉及的分区数量,如存在分区表生效
type类型,需重点关注,优化SQL的参考坐标。主要分为SYSTEM(有且仅有一行记录)、CONST(PRIMARY或UNIQUE)、EQ_REF(关联表PRIMARY或UNIQUE)、REF(普通KEY)、RANGE(范围)、INDEX(索引)、ALL(全表)
possible_keys可能使用的索引,实际不一定
key实际使用的索引
key_len索引长度,越短效率越高,精度越低
ref索引使用的列
rows检索的行数
filtered命中率
Extra额外信息

结语

索引就像目录,快速检索需要的内容。有效的利用索引,可以让应用性能更好,使用体验更佳。合理的创建索引,也需要经验的总结和积累,此技能是高性能开发必备。

今天过完年了,新春第一天,祝大家开工大吉!


精彩回放


MySQL系列之数据导入导出
MySQL系列之索引入门(上)


在这里插入图片描述

MySQL 面试系列:MySQL 索引的面试题总结 索引是一种能帮助 MySQL 提高查询效率的数据结构。最左匹配原则也叫最左前缀原则,是 MySQL 中的一个重要原则,说的是索引以最左边的为起点任何连续的索引都能匹配上,当遇到范围查询(>、 阅读详情

相关推荐

【MySQL 系列】MySQL 索引篇

在 MySQL 中,索引是一种帮助存储引擎快速获取数据的数据结构,形象的说就是索引是数据的目录。它一般是以包含索引键值和一个指向索引键值对应数据记录物理地址的指针的节点的集合的清单的形式存在。

栗筝i的博客 4302

MySQL系列之索引入门(上)

在我们的日常项目或产品研发/运行过程中,是否经常遇到查询效率问题?必须的呀但凡遇到这类问题,甲方见了直叹气,乙方见了直摇头,恨不得亲自上阵了哟~横向拆表,分而治之纵向拆表,大而化小增加索引,寻找捷径优化SQL,探索最优…等等今天博主重点讲讲其中的索引(英文:index)是如何快速定位的。Let`s Go!首先,我们了解一下,MySQL有哪些索引可供选择。索引类型索引名称索引说明KEY普通索引基本索引类型,值允许重复和空UNIQUE唯一索引值必须唯一,允许空。

splendid_java的专栏 777

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7946

【MySQL精通系列之四】【索引结构入门】

数据库索引

weixin_36165763的博客 264

CST入门——0. 安装CST Studio Suite 2022

安装CST Studio Suite 2022详细操作步骤

plmxu34的博客 6万+

SoC验证新思路:除了UVM仿真,你还可以试试Cadence JasperGold的形式化验证

本文深入探讨了Cadence JasperGold形式化验证在SoC设计中的创新应用,对比传统UVM仿真验证,详细解析了其数学穷尽性验证优势。通过实战案例展示了JasperGold在总线协议、时钟域交叉等关键场景的验证方法,并提供了混合验证流程设计与效能优化方案,帮助工程师提升验证效率30%以上。

weixin_30566063的博客 120

mysql 修改索引类型_测试开发必懂系列MySQL索引(入门篇)

说些闲话切入主题MySQL索引分类逻辑类型分类索引的其他创建方式(以下索引均指逻辑分类)MySQL索引入门说些闲话 MySQL数据库目前在各大互联网公司中基本上是使用频率最高的数据库,也基本上是QA小伙伴在日常测试过程中接触最多的数据库系统了吧。作为一名QA其实跟MySQL打交道的地方还挺多的,比如在功能测试时我们某些用例可能会通过查询数据库来验证用例的执行结果是否符合预期、比如在我们进...

weixin_39534759的博客 156

【提示学习代码】CoOp代码详读

CoOp是对CLIP的改进工作,主要是对prompt进行学习从而不用来手动设置prompt。自定义CLIP模型:上述两个模块结合而成的CLIP。文本编码器,接收文本的输入,并输出相应的编码表示。将图像和文本进行编码并计算它们之间的相似性。permute后变成了(4,2,3)Prompt学习器,用于学习生成提示。

weixin_51293984的博客 5816

MySQL索引与性能优化入门:让查询提速的秘密武器【MySQL系列】

本文系统讲解MySQL索引优化知识体系,包括索引本质、常见类型(主键、唯一、组合等)及B+树原理。重点解析EXPLAIN执行计划分析、慢查询日志监控等优化工具,提供覆盖索引、分页优化等实用技巧,并指出常见误区。通过百万级用户查询案例,展示从索引创建到执行计划验证的完整优化流程,帮助开发者建立系统化的性能调优方法论。

程序员熊建锟。AI技术知名博主。优快云优质创作者(粉丝1W+)、腾讯云开发者先锋;阿里云专家博主;华为云“云享专家”、51CTO专家博主 1344

点云图的学习

一。点云地图拼接 1.1 配置运行环境 首先配置安装opencv3,安装完成后如下图: 然后配置点云图工具pcl,直接使用apt即可安装,安装后如下图: 最后使用点云工具观察点云图: 1.2 原理解析 总的来说由多角度拍摄图片拼接为点云3D图,是通过相机的内参,将像素坐标转化为相机坐标,再通过外参将相机坐标转化为世界坐标系,然后将每张图片的像素绘制填充于同一个世界坐标系下面,形成点云3D图。...

ff_xun的博客 1万+

【DNN实现二分类模型推理部署(C#)----20240712】

【DNN实现二分类模型推理部署(C#)----20240712】

weixin_44119674的博客 211

MySQL从入门到精通(六):索引优化详解

本文详细介绍了MySQL索引的工作原理、类型、设计策略以及优化技巧。掌握这些知识将帮助你设计出更高效的数据库结构,提高查询性能,解决实际项目中的性能瓶颈问题。在下一篇文章中,我们将深入探讨事务管理事务的ACID特性事务隔离级别锁机制死锁预防与处理并发控制策略敬请期待!🚀关注我,不错过更多MySQL干货!🔔💬评论区留下你的问题,我们一起讨论!

m0_65382359的博客 369

一文搞懂LDO !

Start-up 时间是 IC 做死的,如果想要延时启动,最简单的办法是在 EN 上接一个大一些的电容到地,构成一个简单的 RC 电路。电容太小,电压跌落大,响应快。输出电流高,功率大;外围器件少,电路简单,成本低,负载响应快,输出纹波小;将采集的电压输入到比较器反向输入端,与正向输入端的基准电压(期望输出的电压)进行比较,再将比较结果进行放大;是指在给定负载变化下的输出电压的变化,这里的负载变化通常是从无负载到满负载。芯片的静态电流大小与其他性能成反关系,如低噪声,高电源电压抑制比,静态电流大。

weixin_46969363的博客 4382

mysql 递归查找父节点_MySQL系列-第22篇:MySQL索引原理详解

Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。这是Mysql系列第22篇。背景使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有:按照id查询唯一一条记录按照某些个字段查询对应的记录查找某个范围的所有记录(between and)对查询出来的结果排序my...

weixin_30086041的博客 323

YOLOv10精度上不去?QAT量化感知训练全流程,INT8推理mAP只掉0.8%

普通PTQ量化虽简单,但无法应对YOLOv10的小目标特征和激活分布波动,导致精度暴跌。QAT通过“模拟量化误差+联合优化权重与量化参数”,让INT8模型精度接近FP16,同时速度提升1.8倍,完美适配实时检测场景(如安防监控、自动驾驶)。该流程已在工业级项目中验证,针对YOLOv10的优化策略(敏感层保护、小目标加权、分阶段训练)可直接迁移至其他YOLO系列(v8/v9),量化后精度损失均可控制在1%以内。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 915

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MySQL索引系列:全文索引

什么是全文索引? 全文索引首先是 MySQL 的一种索引类型,也是搜索引擎的关键技术。 试想在1M大小的文件中搜索一个词,可能需要几秒,在100M的文件中可能需要几十秒,如果在更大的文件中搜索那么就需要更大的系统开销,这样的开销是不现实的。 所以在这样的矛盾下出现了全文索引技术,有时候有人叫倒排文档技术。 全文索引的作用是什么? 全文索引是将存储在数据库中的大段文本中的任意内容信息查找出来的技术。 既然是查找包含某些内容的文本,用 like + 通配符 或者正则表达式就可以实现模糊匹配,为什么还要全文索引?

@日月空@的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL系列之索引

此为MySQL专栏文章之一,讲解MySQL 索引。索引是帮助 MySQL 高效获取数据 的 数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查询算法,这种数据结构就是索引。优点:● 提高数据检索效率,降低数据库的IO成本● 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗缺点:● 索引列也是要占用空间的。

Java 技术专栏,从入门到精通,熟悉企业级开发 2302

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

面试中,MySQL 索引系列相关问题详解

面试中,MySQL 索引系列相关问题详解 文章目录面试中,MySQL 索引系列相关问题详解什么是索引?索引的分类按数据结构分类通过主键查询商品数据的过程通过二级索引查询商品数据的过程为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构?按物理存储分类按字段特性分类主键索引唯一索引普通索引前缀索引按字段个数分类联合索引什么时候需要 / 不需要创建索引?什么时候适用索引?什么时候不需要创建索引?有什么优化索引的方法?前缀索引优化覆盖索引优化主键索引最好是自增的防止索引失效总结结语 面试中,

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 6334

【MySQL入门·索引】13.3 删除索引

通过本文的讨论,我们深入了解了MySQL中删除索引的方法、注意事项以及索引的维护、选择与监控等方面的知识。在实际应用中,我们需要根据具体的业务需求和数据访问模式来合理设计和管理索引。定期审查现有索引的使用情况,删除不再需要的索引以释放存储空间和提高性能。在创建新索引时,要考虑列的选择性、查询的WHERE子句以及避免过度索引等因素。使用复合索引来优化涉及多个列的查询条件。利用执行计划、慢查询日志和性能监控工具来分析和优化索引的使用情况。

Python老吕的博客 5220

【MySQL系列】abc索引分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 2万+

MySQL索引系列--索引的类型

本文介绍MySQL的索引的类别。

IT利刃出鞘的博客 5548

【MySQL原理系列】- MySQL的索引

如果存储引擎不支持哈希索引,则可以模拟像InnoDB一样创建哈希索引在B-Tree基础上创建一个伪哈希索引,”伪“指仍用B-Tree进行查找,但是它使用哈希值而不是键本身进行索引查找需要做的就是在查询的WHERE中手动指定使用哈希函数,并维护哈希值不要使用SHA1() 和MD5() 作为哈希函数,因为其是是强加密函数,计算出来的哈希值很长,旨在最大限度消除冲突,但这里并不需要这样高的要求要避免冲突问题,当使用哈希索引进行查询的时候,必须在WHERE 条件中带入哈希值和对应列值。

m0_68383079的博客 1063

【MySQL系列】修改索引

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1万+

【MySQL系列】-回表、覆盖索引真的懂吗

在面试时常会被问一些概念性的东西。这些内容其实在开发中比较少用,但是为了显示你的知识储备你必须学习。博主最近在考Mysql认证时,也常碰到这样的问题。整理MySQL概念输出这篇博文。

记录总结工作过往 1793

MySQL系列:索引

MySQL索引是一种数据结构,旨在提高数据查询速度。

天然玩家的博客 3397

MySQL 系列之索引

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质: 索引是数据结构。InnoDB存储引擎支持以下几种常见的索引:B+树索引、全文索引、哈希索引,其中比较关键的是B+树索引。

MichaelZ的博客 770
上一篇: MySQL系列之索引入门(上)
下一篇: 2024年中漫谈
一叶飞舟
一叶飞舟 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄16年 6566粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值