深入学习MySQL——如何创建索引(一),躬身实战出真知

大模型时代职业指南:从零基础到应用开发工程师的实战路径 大语言模型(LLM)作为人工智能领域的前沿技术,其核心原理是基于Transformer架构的海量参数模型,通过预训练和微调来理解和生成人类语言。这项技术的价值在于将强大的自然语言处理能力工程化、平民化,使其不再是实验室的专属,而是能够广泛应用于各行各业的赋能工具。在应用场景上,大模型正通过检索增强生成(RAG)、智能体(Agent)等技术范式,深度融入金融分析、智能客服、内容创作和企业知识管理等具体业务中,解决信息过载与效率瓶颈问题。本文聚焦于大模型应用开发这一热门方向,为希望入局的开发者梳理出一条清晰的技 阅读详情

前言

昨天咱们简单介绍了MySQL索引的整体概述,让大家有一个初步的认识。今天,咱们就开始具体实战:创建MySQL索引。

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

MySQL支持多种方法在单个或多个列上创建索引:在创建表的定义语句CREATETABLE中指定索引列,使用ALTER TABLE语句在存在的表上创建索引,或者使用CREATE INDEX语句在已存在的表上添加索引。后续咱们将详细介绍这3种方法。

使用CREATE TABLE创建表时,除了可以定义列的数据类型,还可以定义主键约束、外键约束或者唯一性约束, 而不论创建那种约束,在定义约束的同时相当于在指定列上创建了一个索引。创建表时创建索引的基本语法格式如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、 全文索引和空间索引; INDEX与KEY为同义词,两者作用相同,用来指定创建索引; col_ name为需要创建索引的字段列,该列必须从数据表中定义的多个列中选择; index_ name指定索引的名称,为可选参数,如果不指定,MySQL默认col name为索引值; length 为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度; ASC 或DESC指定升序或者降序的索引值存储。

创建普通索引

最基本的索引类型,没有唯一性之类的限制,其作用只是加快对数据的访问速度。

在book表中的year_ publication 字段上建立普通索引,SQL语句如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

该语句执行完毕之后,使用SHOW CREATE TABLE查看表结构:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

由结果可以看到,book 表的year_ publication 字段上成功建立索引,其索引名称year_ publication 为MySQL自动添加。使用EXPLAIN语句查看索引是否正在使用:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

EXPLAIN语句输出结果的各个行解释如下:

(1 )select_ type 行指定所使用的SELECT查询类型,这里值为SIMPLE,表示简单的SELECT, 不使用UNION或子查询。其他可能的取值有: PRIMARY、UNION、SUBQUERY等。

(2) table 行指定数据库读取的数据表的名字,它们按被读取的先后顺序排列。

(3) type行指定了本数据表与其他数据表之间的关联关系,可能的取值有system、const、eq_ref、ref、range、index和All。

(4) possible_ keys 行给出了MySQL在搜索数据记录时可选用的各个索引。

(5) key行是MySQL实际选用的索引。

(6) key_ len 行给出索引按字节计算的长度,key_ len 数值越小,表示越快。

(7) ref行给出了关联关系中另一个数据表里的数据列的名字。

(8)rows行是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。

(9) extra 行提供了与关联操作有关的信息。

可以看到,possible_ keys 和key的值都为year_ publication, 查询时使用了索引。

创建唯一索引

创建唯一索引的主要原因是减少查询索引列操作的执行时间,尤其是对比较庞大的数据表。它与前面的普通索引类似,不同的就是:索引列的值必须唯一, 但允许有空值。如果是组合索引,则列值的组合必须唯一。

创建一个表t1,在表中的id字段上使用UNIQUE关键字创建唯一索引。

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

该语句执行完毕之后,使用SHOW CREATE TABLE查看表结构:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

由结果可以看到,id 字段上已经成功建立了一个名为UniqIdx的唯一索引。

创建单列索引

单列索引是在数据表中的某一个字段上创建的索引,一个表中可以创建多个单列索引。前面两个例子中创建的索引都为单列索引。

创建一个表t2,在表中的name字段上创建单列索引。

表结构如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

该语句执行完毕之后,使用SHOW CREATE TABLE查看表结构:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

由结果可以看到,id 字段上已经成功建立了一个名为SingleIdx的单列索引,索引长度为20。

创建组合索引

组合索引是在多个字段上创建一个索引。

创建表t3,在表中的id、name和age字段上建立组合索引,SQL语句如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

该语句执行完毕之后,使用SHOW CREATE TABLE查看表结构:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

由结果可以看到,id. name 和age字段上已经成功建立了一个名为Multildx的组合索引。

组合索引可起几个索引的作用,但是使用时并不是随便查询哪个字段都可以使用索引,而是遵从“最左前缀”:利用索引中最左边的列集来匹配行,这样的列集称为最左前缀。例如这里由id、name 和age 3个字段构成的索引,索引行中按id/name/age的顺序存放,索引可以搜索下面字段组合: (id, name, age)、(id, name)或者id。如果列不构成索引最左面的前缀,MySQL不能使用局部索引,如(age) 或者(name,age) 组合则不能使用索引查询。

在t3表中,查询id和name字段,使用EXPLAIN语句查看索引的使用情况:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

可以看到,查询id和name字段时,使用了名称Multildx的索引,如果查询(name,age)组合或者单独查询name和age字段,结果如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

此时,possible_ keys 和key值为NULL,并没有使用在t3表中创建的索引进行查询。

创建全文索引

FULLTEXT (全文索引)可以用于全文搜索。只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR、VARCHAR 和TEXT列创建索引。索引总是对整个列进行,不支持局部(前缀)索引。

创建表t4,在表中的info字段上建立全文索引,SQL语句如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

因为MySQL 5.7 中默认存储引擎为InnoDB, 在这里创建表时需要修改表的存储引擎为MyISAM,不然创建索引会出错。

语句执行完毕之后,使用SHOW CREATE TABLE查看表结构:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

由结果可以看到,info 字段上已经成功建立了一个名为FulTxtldx的FULLTEXT索引。全文索引非常适合于大型数据集,对于小的数据集,它的用处比较小。

创建空间索引

空间索引必须在MyISAM类型的表中创建,且空间类型的字段必须为非空。

创建表t5,在空间类型为GEOMETRY的字段上创建空间索引,SQL 语句如下:

深入学习MySQL——如何创建索引(一),躬身实战出真知

 

可以看到,t5 表的g字段上创建了名称为spatIdx的空间索引。注意创建时指定空间类型字段值的非空约束,并且表的存储引擎为MyISAM。

今天只是讲解了其中一种MySQL索引方式:创建表的时候创建索引,就是希望大家能够深入理解,每天进步一点点,留给大家充分的自我思考时间,只有这样,学习思考,才能更好的理解。

喜欢请多多点赞评论分享,关注小编,你们的支持就是小编最大的动力~~~

SAP CKMLCP 月结7大常见报错:从“未找到成本核算运行”到“物料占用”的完整解决方案 本文深入解析SAP CKMLCP月结过程中的7大常见报错,从权限问题到数据一致性错误,提供系统化的解决方案。重点解决'未找到成本核算运行'和'物料占用'等典型问题,帮助财务人员高效完成成本核算月结,确保数据准确性。 阅读详情

相关推荐

ERA5气象数据下载与解压全攻略:Python脚本一键搞定(附错误处理技巧)

本文提供了一套完整的ERA5气象数据自动化处理方案,涵盖从CDS API配置、智能批量下载到高效解压与数据验证的全流程。重点介绍了如何通过Python脚本实现一键式数据下载与批量解压,并分享了实用的错误处理技巧与性能优化策略,帮助科研人员高效获取和处理大规模气象数据。

k8l9m0n的博客 340

9、创建索引(CREATE INDEX)

创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。创建索引对 MySQL 数据库的高效运行来说是很重要的。 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。 语法格式: CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC]) 语法说明如下: &

you can you up up up的博客 1万+

Windows下飞桨PaddlePaddle 2.6.1 GPU版环境搭建全攻略(含CUDA 11.7配置避坑指南)

本文详细介绍了在Windows系统下搭建飞桨PaddlePaddle 2.6.1 GPU版环境的完整流程,特别针对CUDA 11.7和cuDNN的安装提供了避坑指南。从Anaconda环境配置、CUDA Toolkit安装到飞桨GPU版的验证,手把手帮助开发者高效完成深度学习环境搭建,解决常见问题并优化性能。

x8y9z0的博客 1096

索引+索引的类型+创建索引

索引 1在关系数据库中,索引是一种与表有关的数据库结构,它是除了表以外的另一个重要模式对象。 2索引建立在表的一列或多列上的辅助对象,目的是提高表中数据的访问速度. 3索引是表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序。 4索引的特殊作用是在表内重新排列记录的物理位置 索引的类型 B树索引,反向键索引,位图索引,基于函数的索引,簇索引,全局索引,局部索引等.创建

zhou920786312的博客 2101

合金理论自动化工具包(Alloy-Theoretic Automated Toolkit:ATAT)的安装

合金理论自动化工具包(ATAT)是一个通用名称,指的是合金理论工具的集合,它包含了不同的代码工具,具体如下: 1)根据第一性原理(映射和映射)构造集群扩展的代码。簇展开是一种非常紧凑和有效的表达式,给出取代合金的能量作为其构型的函数(即原子的类型位于晶格的哪个位置)。 2)为了计算合金的热力学性质,从聚类展开开始,对晶格模型进行蒙特卡洛模拟(emc2和memc2)的代码。 3)执行晶格动力学计算的代码(fitfc, fitsvsl, svsl) 4)使用简单的物理或半经验模型计算电子和磁自由能贡献

qq_33400046的博客 1万+

深入解析摄像头硬件接口:DVP、MIPI-CSI2与USB的技术对比与应用场景

本文深入解析了摄像头三大主流硬件接口DVP、MIPI-CSI2与USB的核心技术差异。DVP接口作为并行传输的“老兵”,成本低但带宽和抗干扰能力有限;MIPI-CSI2凭借差分串行设计成为移动高清设备的首选,具备高带宽和强抗干扰性;USB接口则依托UVC标准实现了跨平台的即插即用。文章通过对比传输方式、带宽、应用场景等关键维度,为智能硬件、嵌入式系统等领域的工程师提供了清晰的选择指南。

c7d8e的博客 515

创建索引的方法有两种

创建索引的方法有两种:创建表的同时创建索引,在已有表上创建索引。 方法一:创建表的同时创建索引。 使用这种方法创建索引时,可以一次性地创建一个表的多个索引(例如唯一性索引、普通索引、复合索引等),其...

2952

Python RK3588 MPP 8路视频硬解码!全体目光向我看齐!

本文重写了官方demo、加入了Zlmediakit进行拉流并通过pybind11将代码封装成so库,现在,在python中直接通过import的方式,就能完成基础的拉流解码操作,目前支持8路拉流解码!!!

m0_46303486的博客 4881

创建索引的两种方式

1.写sql创建 sql范本:create index 索引名称 on 表名(字段名); sql示例:create index index_wsh on GHP_PROMULGATE_CERT_RESULT(WSH);

qw1820209805的博客 2万+

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

【RT-DETR实战】117、华为昇腾CANN部署探索:从模型转换到推理踩坑实录

本文总结了RT-DETR模型在昇腾310B芯片上部署的关键挑战与解决方案。主要遇到四大问题:1)模型转换时需注意ONNX导出设置,建议先固定尺寸验证;2)内存布局差异导致推理异常,需精确匹配NHWC/NCHW格式;3)流水线并发优化中内存复用和异步处理是关键;4)调试阶段需利用专用工具逐层比对。作者提出六条实用建议,包括小尺寸验证、预处理对齐、内存池设计等,强调部署是持续适配过程,需建立完整的测试体系应对工具链迭代。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 195

mysql索引语句_mysql建立索引语句格式

项目需要将某个表的某两个字段添加唯一索引,保证这两个字段的值不能同时重复。Alter table 表名 add UNIQUE index 索引名 (字段1,字段2)当表中已经存在重复数据的时候,添加的时候就会报错,这时候需要将数据去重。1、先查出来重复的数据SELECT * FROM (SELECT 字段,COUNT(1) AS num FROM 表 GROUP BY 字段) temp WHERE...

weixin_39553705的博客 493

《无线传感网络 matlab》:从入门到实践

这就是如何使用Matlab建立一个简单的无线传感网络并进行仿真的方法。当然,这只是一个入门级的示例,真正的无线传感网络可能会更加复杂和庞大。首先,我们需要创建一个无线传感网络的基础结构。接下来,我们需要定义一个数据包的格式,以便节点之间可以交换信息。无线传感网络是一种由无线传感器节点组成的、自组织的网络。现在,我们可以开始编写节点代码了。我们将使用Matlab提供的工具箱来构建一个简单的无线传感网络,并对其进行仿真和分析。现在,我们可以将这个节点复制9次,以创建一个包含10个节点的无线传感网络。

NoerrorCode的博客 297

mysql按升序创建索引_深入学习MySQL——如何创建索引(一),躬身实战出真知...

前言昨天咱们简单介绍了MySQL索引的整体概述,让大家有一个初步的认识。今天,咱们就开始具体实战:创建MySQL索引。MySQL支持多种方法在单个或多个列上创建索引:在创建表的定义语句CREATETABLE中指定索引列,使用ALTER TABLE语句在存在的表上创建索引,或者使用CREATE INDEX语句在已存在的表上添加索引。后续咱们将详细介绍这3种方法。使用CREATE TABLE创建表时,...

weixin_39612554的博客 1002

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何学习mysql

学习前,先找攻略,看看前人是如何做的。定好目标,制定计划,然后是不断行动了!学习的过程是漫长的,需要不断去激励自己!最后用《暗时间》里面摘抄的笔记来提醒自己,去培养好的习惯。1,整天把你要做的事情,要学习的东西常驻在你的大脑,时刻给予它最高的优先级。你走路、吃饭、做梦的时候,心心念念想的就是这件事情。你走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看着读的东西2,一次只做一次任务,减少任务切换的消耗。

一路向前 201

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《高性能MySQL》读书笔记

前言 读的这一版是涵盖MySQL5.5的第3版,700多页的大部头,只在部分目前比较关注的章节细读,有第4章Schema与数据类型优化、第五章创建高性能的索引、第六章查询性能优化、第10章复制、第11章可扩展的MySQL以及第12章高可用性。两个月的时间通读了一遍,受益匪浅,简单记录一些概念性要点,很多实操细节还需反复研读和躬身实践。 全书目录 第1章 MySQL架构与历史 第2章 MySQL基...

云潮海啸的博客 304

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

收藏!2026年程序员AI转型5大黄金赛道,从零基础到高薪实战指南

人工智能+已深度嵌入国家战略布局,连续写入政府工作报告的背后,是产业数字化转型从“概念落地”迈向“价值深耕”的关键阶段。Gartner与智源研究院2026年报告均指出,AI已成为引领科技变革的核心引擎,多智能体系统、AI原生开发平台等新技术浪潮加速袭来。在这场变革中,程序员群体正站在职业机遇的核心路口——前程无忧2026年数据显示,AI相关岗位薪资普遍较传统开发岗溢价35%-55%,头部企业资深AI工程师年薪破百万已成常态,核心技术人才更能享受20%-35%的薪资增幅,远超行业平均水平。

python12345_的博客 1517

虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录

其实自我介绍最忌讳的就是说废话,比如姓名、年龄这些简历中都有体现,所以我们要说点简历中没有的,比如自己的项目过往,取得的成就与建树(日活5万,日活是一个非常重要的指标,对于增长后期的产品,一个关键的提升指标就是做活跃,虽然5万日活还无法变现,但它是一个从0到1的过程,是百万日活的基础),甚至有意无意的,谈论的技术点可以往岗位描述上倾斜,比如岗位描述中出现过的django、部署、docker、selenium等技术,都可以在面试的自我介绍中再次出现,暗示自己与该岗位珠连璧合,相得益彰。名词作为优先级为1。

刘悦的技术博客 393

打好“三场仗”,数据库新晋厂商石原子胜券在握

石原子科技携业界唯一开源的MySQL HTAP数据库StoneDB,以及开箱即用的下一代PB级云原生数据仓库AtomData重磅入场。

优快云云计算 2347

oracle创建索引的语法格式

CREATE [UNIQUE|BITMAP]  INDEX[schema.] index_name  ---UNIQUE:说明该索引是唯一索引  BITMAP:创建位图索引 ON [schema.] table_name (column_name[DESC|ASC][,

6484

MySQL使用CREATE INDEX创建索引

如果,在一个已经存在的表上创建索引,可以使用CREATE INDEX语句,语法格式 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名(字段名[(长度)] [ASC|DESC]); 参数说明 UNIQUE、FULLTEXT和SPATIAL都是可选参数,分别用于表示唯一性索引、全文索引和空间索引。 INDEX,用于指明字段为索引。 首先,创建一

天高任鸟飞 4万+

python入门(11)——python连接数据库(mysql)与索引操作

文章目录1.PyMySQL的使用1.1 安装pymysql第三方包:1.2 导入pymysql1.3 创建连接对象1.4 获取游标对象1.5 pymysql完成数据的查询操作1.6 pymysql完成对数据的增删改1.7 防止SQL注入索引2.1 索引的使用2.2 验证索引查询性能2.3 联合索引2.4 联合索引的最左原则2.5 MySQL中索引的优点和缺点和使用原则 1.PyMySQL的使用 1...

zzhou——blog 946

Mysql普通索引创建实例

1、前面讲到了Mysql主键索引的创建,下面将介绍Mysql普通索引创建的实例 2、Mysql普通索引创建的实例       2.1 在创建表的时候,指定普通索引 create table table_index ( id int primary key auto_increment , name varchar(20) , index index_name (name

Learning 8193

Python学习之路---MySQL--索引

需求:  一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。 说起加速查询,就不得不提到索引了。 索引:    简单的说,相当于图书的目录,可以帮助用户快速的找到需要的内容.    在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结...

chengyinman0078的博客 552
上一篇: 深入学习MySQL,索引机制详解,助你循序渐进出真知
下一篇: Spring Boot入门教程,进军微服务从这出发
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值