当前位置: 首页 > 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条消息。请看下图。 我们这里涉及到两个区…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...