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

索引-介绍结构语法

一.概述:

1.当给某个字段创建索引后,就会把字段生成二叉排序树进行查找,大大增加了查找效率,比不创建索引时用的全表扫描好得多。

2.二叉排序树:小的在左边,大的在右边(查找和存放都遵循这个原则)。

3.注:二叉排序树仅仅是一个示意图,并不是索引真正的底层结构。

4.索引相当于一本书中的目录,有目录时很好找,没有目录时只能全书找。


二.数据库的优点和缺点:

1.优点:提升数据库查询的效率,提高数据库排序的效率。

2.缺点:索引会占用存储空间(但占的空间一般不大);索引大大提高了查询效率,但同时降低了增,删,改的效率,这是因为在进行增,删,改的操作时数据会发生变化,此时就需要重新维护索引创建的二叉排序树这个数据结构->在创建索引后,增,删,改就不益用了。


三.结构:

1.红黑树也是平衡二叉树;

2.索引结构为什么不采用二叉搜索树和红黑树呢?原因是在数据量较大的情况下,层级会很深,导致检索(查找)速度慢;

3.B+(B+Tree)树中一个结点可以存储多个键值(key),存储了几个键值,下面就会有几个指针,就会有几个子结点,这样相对于平衡二叉树和红黑树,相同数据量的情况下,B+树的高度就会低很多,查找效率也就高很多;

4.页是数据库进行磁盘管理的最小单位,一个页的大小为16KB;

5.B+树的非叶子结点仅仅起到索引(查找)数据的作用,并不保存具体的数据,所有的数据都存储在叶子结点(最底下的结点)中,所有的key都会出现在叶子结点,这样能保证数据库服务器的查询性能稳定:

6.由于B+树是多路平衡搜索树,所以该树的叶子结点元素是按照元素从小到大的顺序排序的(从左向右),而且在叶子结点中的元素形成了一个双向链表(是有序的),由上一个元素可以找到下一个元素,也可以由下一个元素找到上一个元素;

7.比如查找元素53,首先查找根结点,每一个结点中查找是利用二分查找,发现53大于等于38,小于67的,所以走P2指针,到下一个磁盘块,发现53大于等于47,小于55的,所以走P2指针,继续到下一个磁盘块查找,最终找到了53并获取到对应的数据:

比如查找元素29,根结点中29大于等于6,小于38,所以走P1指针,到下一个磁盘块,发现了29,直接走P3指针,走向下一个磁盘块,最终找到了29并获取到对应的数据(只需要进行3次磁盘IO就找到了对应的数据);


四.语法:

1.创建唯一索引加unique即字段被unique修饰(唯一索引不是一个字段的意思),后面的多个字段名之间用逗号分隔;


五.代码演示:

1.创建索引:

-- 创建:为tb_emp表的name字段创立一个索引
create index idx_emp_name on tb_emp(name);

2.查看索引:

-- 创建:为tb_emp表的name字段创立一个索引
create index idx_emp_name on tb_emp(name);
​
​
-- 查询:查询tb_emp表的索引信息
show index from tb_emp;

运行结果:

发现结果有3条记录,但创建索引时只创建了一个索引idx_emp_name ->

第一个索引PRIMARY对应的字段名为id,id为什么会有索引呢?因为id为主键,一旦指定了某个字段为某一张表的主键,他就会自动创建一个索引(也是数据库默认创建的一个主键索引),该索引称为主键索引,而且主键索引的性能是最高的;

第二个索引username,是因为字段username是唯一(unique)的,一旦指定了某个字段是唯一的,数据库就会自动的给该字段创建一个唯一索引即unique index:所以唯一约束本质就是唯一索引

第三个索引idx_emp_name就是刚才创建的索引;

3.删除索引:

-- 创建:为tb_emp表的name字段创立一个索引
create index idx_emp_name on tb_emp(name);
​
​
-- 查询:查询tb_emp表的索引信息
show index from tb_emp;
​
​
-- 删除:删除tb_emp表中name字段的索引
drop index idx_emp_name on tb_emp;

运行结果:


六.总结:


相关文章:

索引-介绍结构语法

一.概述: 1.当给某个字段创建索引后,就会把字段生成二叉排序树进行查找,大大增加了查找效率,比不创建索引时用的全表扫描好得多。 2.二叉排序树:小的在左边,大的在右边(查找和存放都遵循这个原则)。 3.注…...

SpringBoot整合JDBC

讲到这里,基本上我们就可以使用SpringBoot来开发Web项目视图显示和业务逻辑代码,但是要做一个完成案例,我们还差一点点,就是怎么访问数据库,获取数据,接下来我们就看怎么用SpringBoot整合我们前面已经讲过的…...

XXE靶场

XXE-lab 靶场 靶场网址&#xff1a;http://172.16.0.87/ 第一步我们看到网站有登录框我们试着用 bp 去抓一下包 将抓到的包发到重放器中 然后我们构建palody <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/readconvert.base64-encode/resourceC:/flag/fla…...

Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索

作者&#xff1a;来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么&#xff1f; Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…...

Facebook的隐私保护政策:用户数据如何在平台上被管理?

在当今数字化世界&#xff0c;社交平台如何管理用户数据并保护隐私成为了一个热点话题。作为全球最大的社交网络&#xff0c;Facebook&#xff08;现Meta&#xff09;在数据隐私方面的政策备受关注。本文将简要介绍Facebook的隐私保护措施&#xff0c;以及用户数据如何在平台上…...

【ETCD】【源码阅读】深入解析 EtcdServer.applySnapshot方法

今天我们来一步步分析ETCD中applySnapshot函数 一、函数完整代码 函数的完整代码如下&#xff1a; func (s *EtcdServer) applySnapshot(ep *etcdProgress, apply *apply) {if raft.IsEmptySnap(apply.snapshot) {return}applySnapshotInProgress.Inc()lg : s.Logger()lg.In…...

‌HBase是什么,‌HBase介绍

‌官方网站&#xff1a;Apache HBase – Apache HBase Home HBase是一个分布式的、面向列的NoSQL数据库&#xff0c;主要用于存储和处理海量数据。‌它起源于Google的​​​​​​​BigTable论文&#xff0c;是Apache Hadoop项目的子项目。HBase设计用于高可靠性、高性能和可伸…...

【Rust自学】3.3. 数据类型:复合类型

3.3.0. 写在正文之前 欢迎来到Rust自学的第三章&#xff0c;一共有6个小节&#xff0c;分别是: 变量与可变性数据类型&#xff1a;标量类型数据类型&#xff1a;复合类型&#xff08;本文&#xff09;函数和注释控制流&#xff1a;if else控制流&#xff1a;循环 通过第二章…...

【C++】小乐乐求和问题的高效求解与算法对比分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述与数学模型1.1 题目概述1.2 输入输出要求1.3 数学建模 &#x1f4af;方法一&#xff1a;朴素循环求和法2.1 实现原理2.2 分析与问题2.3 改进方案2.4 性能瓶颈与结论…...

configure错误:“C compiler cannot create executables“

执行./configure命令出现如下奇怪的错误&#xff0c;百思不得姐&#xff1a; ./configure命令的日志文件为config.log&#xff0c;发生错误时&#xff0c;该文件的内容&#xff1a; This file contains any messages produced by compilers while running configure, to aid d…...

PAT乙级 锤子剪刀布 巩固巩固map的使用

主要是想借这题巩固巩固c map的使用方法。 大家应该都会玩“锤子剪刀布”的游戏&#xff1a;两人同时给出手势&#xff0c;胜负规则如图所示&#xff1a; 现给出两人的交锋记录&#xff0c;请统计双方的胜、平、负次数&#xff0c;并且给出双方分别出什么手势的胜算最大。 输…...

Webpack学习笔记(1)

1.为什么使用webpack? webpack不仅可以打包js代码&#xff0c;并且那个且支持es模块化和commonjs,支持其他静态资源打包&#xff0c;如图片、字体。。。 2.如何解决作用域问题&#xff1f; 作用域问题&#xff1a;例如loadsh等库&#xff0c;会绑定window对象&#xff0c;会…...

使用xpath规则进行提取数据并存储

下载lxml !pip install lxmlimport requests headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36" } url"https://movie.douban.com/chart" respon…...

【物联网技术与应用】实验3:七彩LED灯闪烁

实验3 七彩LED灯闪烁 【实验介绍】 七彩LED灯上电后&#xff0c;7色动闪光LED模块可自动闪烁内置颜色。它可以用来制作相当吸引人的灯光效果。 【实验组件】 ● Arduino Uno主板* 1 ● USB数据线* 1 ● 7彩LED模块*1 ● 面包板*1 ● 9V方型电池*1 ● 跳线若干 【实验原…...

素数回文数的个数

素数回文数的个数 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 求11到n之间&#xff08;包括n&#xff09;&#xff0c;既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出…...

车辆重识别代码笔记12.18

1、实例归一化&#xff08;Instance Normalization&#xff09;和批量归一化&#xff08;Batch Normalization&#xff09; 实例归一化&#xff08;Instance Normalization&#xff09;&#xff1a; 计算步骤&#xff1a; 对于每个输入样本&#xff0c;在每个通道上分别计算均…...

selenium 在已打开浏览器上继续调试

关闭浏览器&#xff0c;终端执行如下指令&#xff0c;--user-data-dir换成自己的User Data路径 chrome.exe --remote-debugging-port9222 --user-data-dir"C:\Users\xxx\AppData\Local\Google\Chrome\User Data" 会打开浏览器&#xff0c;打开百度&#xff0c;如下状…...

Sentry日志管理thinkphp8 tp8 sentry9 sentry8 php8.x配置步骤, tp8自定义异常处理类使用方法

tp8的默认使用的就是composer来管理第三方包, 所以直接使用 composer 来安装 sentry9 即可. 同时tp8和tp5的配置方式不太一样, 这里我们直接使用自定义异常类来处理Sentry的异常. 1. 安装 sentry9 包 # 安装 sentry9 包 composer require "tekintian/sentry9-php" …...

【经验分享】容器云搭建的知识点

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…...

Java对集合的操作方法

1. 数组转集合 //数组转集合 String[] split quickRechargeAmount.split(","); List<String> stringList Stream.of(split).collect(Collectors.toList()); 2. 对List集合数据内容进行分组 //对List集合数据内容进行分组 Map<String, List<LiveAppGi…...

Agent在财务场景有哪些核心应用?深度解析2026企业智能化转型路径

站在2026年的技术节点回望&#xff0c;财务部门早已从传统的“记账中心”转型为企业的“战略决策大脑”。AI Agent&#xff08;人工智能助手/智能体&#xff09;的爆发式应用&#xff0c;彻底终结了繁琐的表单时代。与2024年的实验性尝试不同&#xff0c;当下的财务Agent具备了…...

考研408计算机学科专业基础综合——计算机网络复习

考研408计算机学科专业基础综合 计算机网络复习 核心说明&#xff1a;本笔记聚焦考研408计算机网络高频考点、必背知识点&#xff0c;贴合命题规律&#xff08;选择题为主、大题集中在核心协议&#xff09;&#xff0c;剔除冗余内容&#xff0c;突出重难点&#xff0c;适配冲刺…...

lvgl_v8之设置label背景颜色一种方式

void lv_label_demo() {static lv_style_t style;lv_style_init(&style);lv_style_set_radius...

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB 代码复现&#xff08;文献代码&#xff09;协同控制 规划 无人机 研究了基于二次规划的安全关键型多智能体系统的控制问题。 每个被控智能体被建模为一个积分器和一个不确定非线性驱动系统的级联…...

关系型数据库星型模型聚合表生成

在关系型数据库&#xff08;MySQL、Oracle、SQL Server等&#xff09;中&#xff0c;通过星型模型模拟多维分析结构&#xff0c;高效生成聚合表&#xff0c;解决报表查询慢、多维分析繁琐、实时计算压力大等核心痛点。 一、前置基础 星型模型是关系型数据库模拟多维结构的最优方…...

基于python的安全信息隐藏技术在数字图像和文本中的应用

一、系统概述 随着信息技术的快速发展&#xff0c;数据泄露与隐私保护问题日益严重。传统的加密技术虽然能有效保护数据的机密性&#xff0c;但在某些特定场合下&#xff0c;数据的“隐蔽性”同样至关重要。隐写术&#xff08;Steganography&#xff09;作为一种安全信息隐藏技…...

3步搞定视频转PPT:开源智能提取工具终极指南

3步搞定视频转PPT&#xff1a;开源智能提取工具终极指南 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 你是否厌倦了手动从视频中截图制作PPT&#xff1f;想要快速将录播课程、会议…...

【APS合集】20余份APS生产排成系统及与其他系统集成方案合集(PPT+WORD)

本方案面向“十五五”构建以约束优化算法为核心的APS智能排程系统&#xff0c;通过集成ERP、MES、SCADA及WMS&#xff0c;实现计划-执行闭环联动。旨在解决人工排产低效、资源冲突频发等痛点&#xff0c;支持分钟级动态重排与交期精准承诺&#xff0c;显著提升设备利用率与订单…...

面试官:包装类型的缓存机制了解么?

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

如何统计不同电话号码的个数?—位图法

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...