数据库-索引(高级篇)

在这里插入图片描述

文章目录

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

更多相关内容可查看

索引概念?

索引(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.mzph.cn/web/13163.shtml

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

相关文章

语法分析-文法

如果对于一部文法中,存在至少一个句子有两个或者两个以上的语法树则该文法是二义性的。 我们可以以上面的例子进行解释,对于第棵个语法树,我们可以看到是先进行了加法运算再进行的乘法运算,因为需要先把EE作为整体运算完后再成为E…

上海亚商投顾:沪指低开低走 两市成交额跌破8000亿

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天震荡走低,三大股指尾盘均跌近1%。地产股逆势走强,光大嘉宝、天地源、云南城投…

幻兽帕鲁Palworld服务器手动+docker部署方法+备份迁移

目录 帕鲁部署官方文档帕鲁手动安装法手动安装steamcmd通过steamcmd安装帕鲁后端 docker容器一键部署幻兽帕鲁绿联云NAS机器部署幻兽帕鲁客户端连接附录1:PalServer.sh的启动项附录2:配置文件游戏存档保存和迁移 关于阿里云计算巢 帕鲁部署官方文档 htt…

​学者观察 | 从区块链应用创新看长安链发展——CCF区块链专委会荣誉主任斯雪明

导语 2024年1月27日,斯雪明教授在长安链发布三周年庆暨生态年会上发表演讲,认为在区块链发展过程中,不仅需要技术创新,同时需要有价值、有特色、有示范意义的应用创新。斯雪明教授介绍了国内区块链技术与应用发展的现状、趋势与挑…

【数据结构】排序(直接插入排序,希尔排序)

目录 一、排序的概念 二、常见的排序算法 三、插入排序 1.直接插入排序 1.直接插入排序实现 2.直接插入排序特性及复杂度 2.希尔排序 1.排序思路 2.希尔排序实现 3.希尔排序的特性及复杂度 一、排序的概念 排序:所谓排序,就是使一串记录&#x…

python手写数字识别(PaddlePaddle框架、MNIST数据集)

python手写数字识别(PaddlePaddle框架、MNIST数据集) import paddle import paddle.nn.functional as F from paddle.vision.transforms import Compose, Normalizetransform Compose([Normalize(mean[127.5],std[127.5],data_formatCHW)]) # 使用tran…

[Java基础揉碎]多线程基础

多线程基础 什么是程序, 进程 什么是线程 什么是单线程,多线程 并发, 并行的概念 单核cpu来回切换, 造成貌似同时执行多个任务, 就是并发; 在我们的电脑中可能同时存在并发和并行; 怎么查看自己电脑的cpu有几核 1.资源监视器查看 2.此电脑图标右键管理- 设备管理器- 处理器…

k8s 二进制安装 详细安装步骤

目录 一 实验环境 二 操作系统初始化配置(所有机器) 1,关闭防火墙 2,关闭selinux 3,关闭swap 4, 根据规划设置主机名 5, 做域名映射 6,调整内核参数 7, 时间同步 三 部署 dock…

原生IP介绍

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

代码随想录算法训练营第五十四天

第二题我看了很久还是没太明白,我发现理解动规有一点点吃力了啊,努努力。 392.判断子序列 总感觉在不等于的时候,应该是dp[i][j] dp[i-1][j-2]; 这里其实按他那个图会更好理解一点。 class Solution { public:bool isSubsequence(string s, …

CentOs安装

安装 开发工具 :GCC、 JDK、mysql 如果出现蓝屏,要在BIOS开启虚拟化支持,或者移除打印机。

Google:站长移除无效网址

当您的网址不需要呈现在Google站长中时,您可以在站长工具中移除网址 操作步骤:登录Google站长,绑定网站完成后,点击左侧删除 >> 输入网址 如果遇到一些网址,可以找寻网址间的规律,比如说&#xff0…

2024生日快乐祝福HTML源码

源码介绍 2024生日快乐祝福HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面, 源码截图 源码下载 2024生日快乐祝福HTML源码

Shell脚本 <<EOF ... EOF语法(Here Document)(特殊的输入重定向方式)(定界符)

文章目录 Here Document语法Here Document 的基本语法使用场景 关于定界符定界符不是变量定界符在 Here Document 中只是一个字符串,主要功能是标记输入文本的开始和结束,使用时应遵循最佳实践格式要求例子和说明如何使用定界符定界符可重复使用&#xf…

Spring数据访问全攻略:从JdbcTemplate到声明式事务

上文讲到 —— 航向数据之海:Spring的JPA与Hibernate秘籍 本文目录 四. JdbcTemplate的使用定义JdbcTemplate及其在Spring中的作用展示如何使用JdbcTemplate简化数据库操作1. 配置JdbcTemplate2. 使用JdbcTemplate查询数据3. 打印查询结果 五. Spring的事务管理介绍…

Linux shell编程学习笔记49:strings命令

0 前言 在使用Linux的过程中,有时我们需要在obj文件或二进制文件中查找可打印的字符串,那么可以strings命令。 1. strings命令 的功能、格式和选项说明 我们可以使用命令 strings --help 来查看strings命令的帮助信息。 pupleEndurer bash ~ $ strin…

在k8s中搭建elasticsearch高可用集群,并对数据进行持久化存储

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Elasticsearch简介 2、k8s简介 二、环境准备 …

Git项目管理——提交项目和版本回退(二)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

android绘制多个黑竖线条

本文实例为大家分享了android绘制多个黑竖线条展示的具体代码,供大家参考,具体内容如下 1.写一个LinearLayout的布局,将宽度写成5dp将高度写成match_parent. 2.在写一个类继承LinearLayout,用LayoutInflater实现子布局的在这个L…

train_gpt2_fp32.cu - main

llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) 源码 // ---------------------------------------------------------------------------- // main training loop int main(int argc, char *argv[]) {// read in the (optional) command line argumentsco…