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

MySQL数据库-索引的介绍和使用

目录

    • MySQL数据库-索引
      • 1.索引介绍
      • 2.索引分类
      • 3.创建索引
        • 3.1 唯一索引
        • 3.2 普通索引
        • 3.3 组合索引
        • 3.4 全文索引
      • 4.索引使用
      • 5.查看索引
      • 6.删除索引
      • 7.索引总结
        • 7.1 优点
        • 7.2 缺点
        • 7.3 索引使用注意事项

MySQL数据库-索引

数据库是用来存储数据,在互联网应用中,数据库存储的数据可能会很多(大数据),数据表中数据的查询速度会随着数据量的增长而逐渐变慢,从而导致相应用户请求的速度变慢,造成用户体验差。为了提高数据的查询效率,我们需要在数据库中用到索引。

数据准备

-- 创建数据表(准备存储500万数据)
CREATE TABLE tb_testindex(fid INT PRIMARY KEY,	-- 主键sid INT UNIQUE,			-- 唯一键tid	int,				-- 普通字段name VARCHAR(20),remark VARCHAR(20)
);
-- 数据准备:创建存储过程,向tb_testindex表插入500万条数据
CREATE PROCEDURE proc_readydata()
BEGINDECLARE i INT DEFAULT 1;WHILE i < 5000000 DOINSERT INTO tb_testindex(fid,sid,tid,name,remark) VALUES(i,i,i,'test_name','test_remark');SET i = i+1;END WHILE;
END;
-- 调用存储过程,准备五百万条数据
CALL proc_readydata();
-- 查询数据
SELECT COUNT(1) FROM tb_testindex;

1.索引介绍

索引:用来提高数据表中数据的查询效率。

索引,就是将数据表中的某一列/某几列的值取出来,构造成便于查找的结构进行存储,生成数据表的目录,当进行数据查找的时候,则先在目录中进行查找,得到对应数据的地址,然后再根据地址到数据表中快速的获取数据记录,避免全表扫描。

2.索引分类

MySQL索引,根据创建的列不同,可以分为:

  • 主键索引:在数据表的主键上创建的索引,这个字段必须被primary key修饰,每张表只能有一个主键
  • 唯一索引:在数据表的唯一键上创建的索引,必须被unique修饰,此列的所有值只能出现一次,可以为NULL
  • 普通索引:在普通字段上创建的索引,没有唯一性限制
  • 组合索引:两个及以上的字段联合起来创建的索引

说明:

  1. 在创建数据表时,将字段声明为主键,会自动在主键字段上创建索引–主键索引
  2. 在创建数据表时,将字段声明为唯一键,会自动创建主键–唯一索引

3.创建索引

3.1 唯一索引
-- 创建唯一索引:创建唯一索引的列可以为空,但不能重复
CREATE UNIQUE INDEX index_tid ON tb_textindex(tid);
3.2 普通索引
-- 创建普通索引:不要求创建索引的列必须不能重复
CREATE INDEX index_tid ON tb_textindex(name);
3.3 组合索引
-- 创建组合索引:在多个字段上创建索引
CREATE INDEX index_tid ON tb_textindex(tid,name);
3.4 全文索引

全文索引,是MySQL5.6版本以后新增的索引:通过此索引,可以进行全文检索操作,因为Mysql的全文检索不支持中文,因此全文索引不被开发者关注,在应用开发中,通常是通过全文搜索,搜索引擎如ES(数据库中间件)实现全文检索。

create fulltext index <index_name> on 表名(字段名);

4.索引使用

索引创建完成以后不需要调用,当根据创建索引的类进行数据查询的时候,会自动使用索引。

组合索引也需要根据创建索引的所有字段进行查询时触发。

  • 在命令行窗口中,可以查询语句的查询规划:
explain select * from tb_testindex where tid = 250000\G;

5.查看索引

-- 命令行
SHOW CREATE TABLE tb_testindex;
-- 查询索引
show index from tb_testindex;
-- 查询索引
show keys from tb_testindex;

6.删除索引

-- 删除索引
-- 索引是建立在字段上的,不同表中可能出现相同名称的索引,所以删除索引时需要指定表名
drop index index_tid on tb_testindex;

7.索引总结

7.1 优点
  • 索引提高查询效率
  • 索引可以避免服务器排序,将随机的IO变成顺序IO
7.2 缺点
  • 索引是根据数据表列的值创建,当数据表中数据发生DML操作时,会重新生成索引文件
  • 索引文件也会占用磁盘空间
7.3 索引使用注意事项
  • 如果数据表中数据不多时,不建议使用索引,全表扫描可能会更快
  • 数据量大,但是DML操作频繁,不建议使用索引
  • 不要在数据重复度高的列上创建索引(性别)
  • 创建索引之后,要注意查询SQL语句的编写,避免索引失效

相关文章:

MySQL数据库-索引的介绍和使用

目录 MySQL数据库-索引1.索引介绍2.索引分类3.创建索引3.1 唯一索引3.2 普通索引3.3 组合索引3.4 全文索引 4.索引使用5.查看索引6.删除索引7.索引总结7.1 优点7.2 缺点7.3 索引使用注意事项 MySQL数据库-索引 数据库是用来存储数据&#xff0c;在互联网应用中&#xff0c;数据…...

【图像去噪】论文精读:Pre-Trained Image Processing Transformer(IPT)

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1. Introduction2. Related…...

Java SE 与 Java EE:基础与进阶的探索之旅

在编程世界中&#xff0c;Java语言以其跨平台、面向对象、丰富的类库等特点&#xff0c;成为了众多开发者和企业的首选编程语言。而Java SE与Java EE&#xff0c;作为Java平台的两个重要组成部分&#xff0c;各自承载着不同的使命&#xff0c;同时又紧密相连&#xff0c;共同构…...

ssm旅游推荐系统的设计与开发

摘 要 旅游推荐系统是一个综合性的在线旅游推荐平台&#xff0c;旨在为用户提供便捷的旅游规划和预定服务。通过该系统&#xff0c;用户能够浏览各类景点信息并进行分类查找&#xff0c;同时获取详尽的景点介绍和相关照片&#xff0c;以辅助做出旅行决策。系统提供在线门票订购…...

【人工智能】用Python和NLP工具构建文本摘要模型:使用NLTK和spaCy进行自然语言处理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 文本摘要是自然语言处理(NLP)中的关键任务之一,广泛应用于新闻、博客、社交媒体和搜索引擎等场景。通过生成简洁而准确的文本摘要,我们可以大大提升信息处理效率。本文将探讨如何使用Python结合NLP工具…...

51c大模型~合集76

我自己的原文哦~ https://blog.51cto.com/whaosoft/12617524 #诺奖得主哈萨比斯新作登Nature&#xff0c;AlphaQubit解码出更可靠量子计算机 谷歌「Alpha」家族又壮大了&#xff0c;这次瞄准了量子计算领域。 今天凌晨&#xff0c;新晋诺贝尔化学奖得主、DeepMind 创始人哈萨…...

资源控制器--laravel进阶篇

laravel的控制器当中有个资源控制器,这个比较好用。 创建资源控制器 php artisan make:controller PhotoController --resource 创建个路由来使用该资源控制器 use App\Http\Controllers\PhotoController; Route::resource(photos, PhotoController::class); 隐式模型绑定不…...

对象:是什么,使用,遍历对象,内置对象

对象使用&#xff1a; 对象访问&#xff1a;&#xff08;对象每个属性之间用逗号隔开&#xff09; 补充&#xff1a;也可以通过 对象名[‘属性名’] 对象方法&#xff1a; 方法名:匿名函数 调用方法不需要控制台打印&#xff0c;只要调用就自动输出值 遍历对象&#xff1a; …...

设计模式:4、命令模式(双重委托)

目录 0、定义 1、命令模式包括四种角色 2、命令模式的UML类图 3、代码示例 0、定义 将一个请求封装为一个对象&#xff0c;从而使用户可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 1、命令模式包括四种角色 接…...

DataWorks快速入门

DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎&#xff0c;为数据仓库、数据湖、湖仓一体等解决方案提供统一的全链路大数据开发治理平台。本文以DataWorks的部分核心功能为例&#xff0c;指导您使用DataWorks接入数据并进行业务处理、周期调度以及数据…...

EasyExcel并行导出多个excel文件并压缩下载

EasyExcel并行导出多个excel文件并压缩下载 在SpringBoot应用中,采用同步方式导出Excel文件会导致服务器在生成文件期间阻塞,特别是在处理大量数据时,这种效率较低的方法会严重影响性能。为了解决这个问题,可以采用以下改进措施:首先将导出的数据进行拆分,然后利用Compl…...

圣诞节秘诀

&#x1f570;️你想在2024年圣诞节脱颖而出吗&#xff1f;利用我们的数据洞察&#xff0c;发现今年最受欢迎的礼物&#xff01;无论是在亚马逊、速卖通、Shopify还是直销平台上&#xff0c;我们的排行榜都将帮助您找到最畅销和最受欢迎的产品。立即优化您的库存&#xff0c;以…...

亚信安全发布《2024年第三季度网络安全威胁报告》

《亚信安全2024年第三季度网络安全威胁报告》的发布旨在从一个全面的视角解析当前的网络安全威胁环境。此报告通过详尽梳理和总结2024年第三季度的网络攻击威胁&#xff0c;目的是提供一个准确和直观的终端威胁感知。帮助用户更好地识别网络安全风险&#xff0c;并采取有效的防…...

Long noncoding RNAs and humandisease

文章名字&#xff1a;Long noncoding RNAs and humandisease Orly Wapinski and Howard Y. Chang Howard Hughes Medical Institute and Program in Epithelial Biology, Stanford, CA 94305, USA 摘要&#xff1a; 一种新型转录本&#xff0c;长非编码RNA&#xff08;lncRNA&…...

嵌入式AI之rknn yolov5初探

本文主要记录在RK3588上跑通RKNUP的rknn_yolov5_demo的过程,并且对rknn_yolov5_demo的代码进行修改,实现在显示器上同步播放rknn_yolov5_demo视频流检测结果。 首先,是RKNUP SDK的编译,参考官方SDK中的README.md文档,下载好对应的sdk编译工具链,我这边使用的是debian系统…...

《Vue零基础入门教程》第三课:起步案例

往期内容 《Vue零基础入门教程》第一课&#xff1a;Vue简介 《Vue零基础入门教程》第二课&#xff1a;搭建开发环境 做为第一个案例, 主要给大家介绍vue的最基本使用. vue使用的3步曲(重点) 引入vue.js编写页面(视图)创建App实例并挂载 1) 引入vue.js 在html的头部, 通过…...

深入浅出C#编程语言

引言 随着.NET框架的发展&#xff0c;C#&#xff08;发音为“C Sharp”&#xff09;已经成为一种非常流行且功能强大的面向对象和类型安全的编程语言。自2002年由微软首次发布以来&#xff0c;C#已经经历了多个版本的迭代&#xff0c;每个新版本都带来了更多的特性和改进。本文…...

游戏盾 :在线游戏的终极防护屏障

随着在线游戏行业的飞速发展&#xff0c;网络安全成为了游戏公司面临的重大挑战。DDoS&#xff08;分布式拒绝服务&#xff09;攻击、CC攻击等网络威胁不仅可能影响游戏的运行&#xff0c;还会损害玩家体验&#xff0c;甚至危及游戏公司的声誉。为了解决这些问题&#xff0c;游…...

工作中的问题记录笔记

1. echarts 中 词云图 页面展示数据丢失&#xff1f; 产生原因&#xff1a; 词云图默认超出画布范围不展示。 解决办法&#xff1a;在series中&#xff0c;设置属性 drawOutOfBound:true。 2. vue 中 router.go(-1) 和 router.push() 区别 Vue Router默认会缓存路由组件&…...

加载指定会话最近消息

加载指定会话最近消息 前言 上一集我们就把三个标签页的加载列表的任务给完成啦&#xff01;那么我们这一集就来完成加载指定绘画最近消息的任务。 需求分析 我们点击了某个会话之后&#xff0c;我们就会去显示我们的会话的最近的N条消息。请看下图。 我们这里涉及到两个区…...

混合求解器:用神经网络增强传统微分方程数值方法

1. 项目概述&#xff1a;当数值方法遇到机器学习在科学计算和工程仿真领域&#xff0c;求解常微分方程&#xff08;ODE&#xff09;和偏微分方程&#xff08;PDE&#xff09;是绕不开的核心任务。无论是模拟电路中的电流变化、预测天气系统的演变&#xff0c;还是分析机械结构的…...

PA100K数据集实战:从下载到结构化解析全流程

1. PA100K数据集初探&#xff1a;为什么选择它&#xff1f;如果你正在研究行人属性识别&#xff0c;PA100K绝对是个绕不开的宝藏数据集。这个数据集包含了10万张真实监控场景下的行人图像&#xff0c;每张图都标注了26种常见属性——从衣着风格&#xff08;比如是否穿T恤、裙子…...

30岁裸辞后,我用两个月拿下AI应用认证,现在OFFER选择困难症犯了

30岁裸辞那天&#xff0c;我最怕的不是没收入&#xff0c;而是突然发现&#xff1a;过去积累的经验&#xff0c;正在被AI重新定价。以前会写方案、做表格、跟项目&#xff0c;算是职场硬通货&#xff1b;到了2026年&#xff0c;招聘JD里开始频繁出现AI工具应用、智能工作流、Pr…...

Office RibbonX Editor:让Office界面定制变得像搭积木一样简单

Office RibbonX Editor&#xff1a;让Office界面定制变得像搭积木一样简单 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbon…...

基于可解释机器学习的城市人口流动空间降尺度分析实践

1. 项目概述&#xff1a;从宏观到微观&#xff0c;解码城市脉搏在城市的肌理中&#xff0c;人口的流动如同血液的循环&#xff0c;承载着经济活力、社会互动与空间结构的全部信息。无论是城市规划师优化公交线路&#xff0c;还是商业分析师评估店铺选址&#xff0c;亦或是公共卫…...

1901-2022年中国气温变化分析实战:用这份1km栅格数据我们能发现什么?

1901-2022年中国气温变化分析实战&#xff1a;如何从1km栅格数据中挖掘气候演变规律当一份覆盖122年、分辨率精确到1公里的气温栅格数据摆在面前时&#xff0c;我们看到的不仅是数字矩阵&#xff0c;更是一部写在经纬度坐标里的气候变迁史诗。这份由逐月数据聚合生成的逐年气温…...

LizzieYzy:你的智能围棋教练,让AI分析变得简单有趣 [特殊字符]

LizzieYzy&#xff1a;你的智能围棋教练&#xff0c;让AI分析变得简单有趣 &#x1f3af; 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 还在为复盘找不到关键点而烦恼吗&#xff1f;想提升棋力却…...

基于随机森林的低成本传感器机器学习校准实践指南

1. 项目概述&#xff1a;当低成本传感器遇上机器学习校准在物联网和智能感知系统铺天盖地的今天&#xff0c;低成本传感器几乎无处不在。从监测办公室的空气质量&#xff0c;到追踪城市街道的噪音污染&#xff0c;再到农业大棚里的温湿度控制&#xff0c;这些价格亲民的“小眼睛…...

免费抓包工具选型指南:Wireshark、Fiddler、mitmproxy、Charles实战对比

1. 抓包工具不是“黑科技”&#xff0c;而是网络世界的显微镜很多人第一次听说“抓包”&#xff0c;脑子里立刻浮现出黑客电影里满屏滚动的绿色代码、键盘敲得噼啪作响、三秒破解银行防火墙的画面。其实完全不是这样——抓包&#xff08;Packet Capture&#xff09;本质上就是把…...

通过TaotokenCLI工具一键配置开发环境接入参数

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置开发环境接入参数 对于需要接入多个大模型服务的开发者而言&#xff0c;手动配置每个项目的API密钥、…...