数据库-索引(高级篇)

news2025/1/24 9:43:38

在这里插入图片描述

文章目录

    • 索引概念?
    • 索引演示?
    • 索引的优劣?
    • 为什么使用索引就快?
    • 本篇小结

更多相关内容可查看

索引概念?

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
在这里插入图片描述
一提到数据结构,大家都会有所担心,担心自己不能理解。不过在这里大家完全不用担心,下文会详细介绍。

索引演示?

表结构及其数据如下:
在这里插入图片描述

假如我们要执行的SQL语句为 : select * from user where age = 45
无索引情况
blog.csdnimg.cn/direct/98d8d92c3c464e309fce0ff928f9e5e5.png)

在无索引情况下,就需要从第一行开始扫描,一直扫描到最后一行,我们称之为 全表扫描,性能很低。

有索引情况
如果我们针对于这张表建立了索引,假设索引结构就是二叉树,那么也就意味着,会对age这个字段建立一个二叉树的索引结构。
在这里插入图片描述

此时我们在进行查询时,只需要扫描三次就可以找到数据了,极大的提高的查询的效率。

索引的优劣?

优势

  1. 提高数据检索的效率,降低数据库的IO成本
  2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗

劣势

索引列也是要占用空间的 索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE、DELETE时,效率降低

为什么使用索引就快?

  1. 减少数据扫描: 索引是一种数据结构,能够快速定位到数据中符合特定条件的记录。通过使用索引,数据库引擎可以直接跳过大部分数据,只扫描索引中符合查询条件的记录,从而大大减少了数据扫描的量,提高了查询速度。
  2. 减少磁盘 I/O索引通常存储在内存中,因此可以减少对磁盘的访问次数。当数据库引擎需要从磁盘读取数据时,如果使用了索引,它可以首先定位到索引中的位置,然后再读取相应的数据块,从而减少了磁盘I/O 操作的次数,提高了查询效率。
  3. 提高数据检索效率 索引能够将数据按照特定的排序方式组织起来,从而加快数据的检索速度。例如,对于 B 树索引,数据库引擎可以利用其平衡树结构进行快速的二分查找,从而快速定位到符合条件的记录。
  4. 避免全表扫描: 在没有索引的情况下,数据库引擎可能需要对整个表进行扫描来找到符合查询条件的记录,这会消耗大量的时间和资源。而使用索引可以避免全表扫描,使查询变得更加高效。
  5. 优化排序和连接操作: 索引不仅可以加速数据的查找,还可以优化排序和连接操作。例如,如果查询需要对结果进行排序或者执行连接操作,索引可以提供已排序的数据或者帮助优化连接顺序,从而加速查询的执行。

本篇小结

本篇提供索引描述内容,可以快速理解什么是索引及其所体现的功能

其他索引的相关问题链接如下
索引结构(B-Tree,B+Tree,Hash,二叉树)
索引分类(主键索引、唯一索引、普通索引、全文索引)
索引语法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式与一致性协议之PBFT算法(一)

PBFT算法 概述 前面提到了拜占庭将军问题之后,有人可能会感到困惑:口信消息型拜占庭问题直接在实际项目中是如何落地的呢?事实上,它很难在实际项目中落地,因为口信消息型拜占庭问题之解是一个非常理论化的算法,没有与…

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP

【软件介绍】手机操控云服务器的神器软件,本人亲测在用,好用极了! 【软件名称】宝塔助手 【软件包名】com.lensyn.zsbt 【软件版本】1.4.1 【软件大小】29.00M 【适用系统】安卓 【软件特色】宝塔助手是以宝塔Linux面板提供的API开发的一款可…

Unity 2021 升级至团结引擎

UnityWebRequest 报错 InvalidOperationException: Insecure connection not allowed 解决方法 不兼容jdk 8 需要安装 JDK11 64bit 必须JDK 11,高版本也不行 安卓环境hub 未给我安装完全。 Data\PlaybackEngines\AndroidPlayer 并没有NDK,SDK。但是 HUB 显示已经…

Maven 依赖排查

先从项目去看显而易见,假如我们有一个项目,父工程中包含一些子工程,如下: 我们想看一下samples-account中的依赖关系,那么我们可以打开 samples-account的pom文件,查看其maven依赖关系图。 我们可以看到此项…

【算法】基础算法005之位运算

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 1.基础位运算 &:…

计算机丢失concrt140.dl是什么意思,concrt140.dll丢失的8个修复方法

concrt140.dll是一个核心的系统文件,属于Microsoft Visual C 2015 Redistributable组件集的一部分,其全称为并发运行时库(Concurrency Runtime)。此动态链接库(DLL)文件在Windows操作系统中扮演着至关重要的…

iOS plist文件增删改查

一. plist简介 plist文件,即属性列表文件,全名是Property List,这种文件的扩展名为.plist,因此,通常被叫做plist文件。它是一种用来存储串行化后的对象的文件,在iOS开发中通常用来存储用户设置&#xff0c…

【Mac】Dreamweaver 2021 for mac v21.3 Rid中文版安装教程

软件介绍 Dreamweaver是Adobe公司开发的一款专业网页设计与前端开发软件。它集成了所见即所得(WYSIWYG)编辑器和代码编辑器,可以帮助开发者快速创建和编辑网页。Dreamweaver提供了丰富的功能和工具,包括代码提示、语法高亮、代码…

win编写bat脚本启动java服务

新建txt,编写,前台启动,出现cmd黑窗口 echo off start java -jar zhoao1.jar start java -jar zhoao2.jar pause完成后,重命名.bat 1、后台启动,不出现cmd黑窗口,app是窗口名称 echo off start "名…

视觉叙事的艺术:StoryDiffusion打造一致性图像/视频故事创作

论文:https://arxiv.org/pdf/2405.01434 主页:StoryDiffusion: Consistent Self-Attention for Long-Range Image and Video Generation 一、摘要总结 本文提出了一种名为StoryDiffusion的新方法,用于生成一系列内容一致的图像和视频&#…

异地组网群晖不能访问怎么办?

在日常使用群晖网络储存设备时,我们常常会遇到无法访问的情况,特别是在异地组网时。这个问题很常见,但也很让人困扰。本文将针对异地组网群晖无法访问的问题进行详细解答和分析。 异地组网的问题 在异地组网中,群晖设备无法访问的…

UE5 升级插件时报:位域的默认成员初始值设定项至少需要 “/std:c++20“错误的解决办法

UE5.3之后的代码默认以C20标准来进行编译,所以找到会产生报错的插件的build.cs里查看有没有关于设置版本的代码,如果有改成Cpp20就行了 以及可以在build.cs内打印调试信息 System.Console.WriteLine($"CppStandard set: {CppStandard}");编译后…

偶然发现了Python的一个BUG。。。

一般情况下,dict(id1, **{id: 1})这句代码应该报TypeError。但如果在捕获了其他异常的情况下,再来执行这句代码,却是会报KeyError,如下图: Python3.10和Python3.9也能复现该情况,正当我摩拳踩掌&#xff0c…

AI作画算法详解:原理、应用与未来发展

随着人工智能技术的不断发展,AI作画逐渐成为了一个热门话题。AI作画,即利用人工智能算法生成绘画作品,不仅仅是技术的展示,更是艺术与科技结合的创新体现。本文将深入探讨AI作画的核心算法原理,并通过实例帮助读者更好…

Selenium 自动化 —— 高级交互(click、sendKeys、submit、clear、select)

更多关于Selenium的知识请访问CSND论坛“兰亭序咖啡”的专栏:专栏《Selenium 从入门到精通》 ​​ 1. 前言 这是我的《Selenium从入门到精通》专栏的第11篇文章,前面花了很多时间在元素的定位上。不管是爬虫和自动化,找到元素后&#xff0c…

原生IP介绍

原生IP,顾名思义,即初始真实IP地址,是指从互联网服务提供商获得的IP地址,IP地址在互联网与用户之间直接建立联系,不需要经过代理服务器代理转发。 原生IP具备以下特点。 1.直接性 原生IP可以直接连接互联网&#xff…

实例分割——Embrapa酿酒葡萄数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

Windows下配置TortoiseGit 访问Ubuntu虚拟机下Samba共享目录

前言: 本文记录学习使用 Git 版本管理工具的学习笔记,通过阅读参考链接中的博文和实际操作,快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: 【TortoiseGit】TortoiseGit安装和配置详细说明-CSDN博客 Git版本管理可视…

Keil问题解决:结构体数组初始化,初始化后的值不是目标值

省流:使用的编译器为compiler version 6,切换为compiler version 5 如果缺少编译器,请参考:Keil手动安装编译器V5版本 结构体定义: typedef struct _TASK_COMPONENTS {uint8_t Run; // 程序运行标…

Visual Studio 创建DLL 、LIB及调用

Visual Studio 创建DLL 、LIB及调用_visual studio 生成dll-CSDN博客 对上述文章进行补充 按照本文操作即可完成。 step1:新建控制台应用 Step2:新建类 在DLL.h内写入: #pragma once class __declspec(dllexport) DLL {public:int myAdd(i…