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

MsSQL中的索引到底长啥样,查找过程怎么进行

参考文章一

参考文章二

建表

mysql> create table user(-> id int(10) auto_increment,-> name varchar(30),-> age tinyint(4),-> primary key (id),-> index idx_age (age)-> )engine=innodb charset=utf8mb4;insert into user(name,age) values('张三',30);
insert into user(name,age) values('李四',20);
insert into user(name,age) values('王五',40);
insert into user(name,age) values('刘八',10);mysql> select * from user;
+----+--------+------+
| id | name  | age |
+----+--------+------+
| 1 | 张三  |  30 |
| 2 | 李四  |  20 |
| 3 | 王五  |  40 |
| 4 | 刘八  |  10 |
+----+--------+------+

聚簇索引(Clustered Index)即索引结构和数据一起存放的索引,并不是一种单独的索引类型。InnoDB 中的主键索引(Primary Key)就属于聚簇索引。

非聚簇索引(Non-Clustered Index)即索引结构和数据分开存放的索引,并不是一种单独的索引类型。二级索引(Secondary Index)就属于非聚簇索引。

聚簇索引(Clustered Index)和 非聚簇索引(Non-Clustered Index) 是从 索引结构和数据存放方面 来对索引来划分类型。

数据表的主键列使用的就是主键索引(Primary Key)。

二级索引(Secondary Index)又称为辅助索引,是因为二级索引的叶子节点存储的数据是主键。也就是说,通过二级索引,可以定位主键的位置。

唯一索引,普通索引,前缀索引等索引属于二级索引。

id 字段是主键索引,age 字段是二级索引(辅助索引)。
所以 id 字段是聚簇索引,age 字段是非聚簇索引。

索引结构

id 是主键,所以是聚簇索引,其叶子节点存储的是 id 主键对应的行记录的数据。

id 索引结构

在这里插入图片描述

age 索引结构

在这里插入图片描述

查找过程

查找id

如果查询条件为主键(聚簇索引),则只需扫描一次 B+ Tree 即可通过聚簇索引定位到要查找的行记录数据

select * from user where id = 1

在这里插入图片描述

查找age

查询条件为普通索引(非聚簇索引),需要扫描两次 B+ Tree,
第一次扫描通过普通索引定位到聚簇索引的值,然后第二次扫描通过聚簇索引的值定位到要查找的行记录数据(第二次查询也称为回表查询)。

select * from user where age = 30;

在这里插入图片描述

在这里插入图片描述

tips

覆盖索引

  • 覆盖索引是指一个索引包含了查询语句中所需的所有字段,因此可以直接返回查询结果而不需要进行回表查询。
  • 优点在于它能够减少磁盘 I/O 和提高查询性能,因为数据库引擎可以直接从索引中获取所需的数据,而不必去实际的数据表中获取。

联合索引

联合索引是指针对多个字段创建的单个索引,它可以涵盖多个字段的查询条件,并且在某些情况下可以提高查询效率。

相关文章:

MsSQL中的索引到底长啥样,查找过程怎么进行

参考文章一 参考文章二 建表 mysql> create table user(-> id int(10) auto_increment,-> name varchar(30),-> age tinyint(4),-> primary key (id),-> index idx_age (age)-> )engineinnodb charsetutf8mb4;insert into user(name,age) values(张三,…...

WPF 全局异常处理

在Application中存在三种异常事件EventHandler DispatcherUnhandledExceptionAppDomain.CurrentDomain.UnhandledExceptionTaskScheduler.UnobservedTaskException 其中 DispatcherUnhandledException 是在异常由应用程序引发但未进行处理时发生,但无法捕获多线程…...

Flink系列之:Elasticsearch SQL 连接器

Flink系列之:Elasticsearch SQL 连接器 一、Elasticsearch SQL 连接器二、创建 Elasticsearch表三、连接器参数四、Key 处理五、动态索引六、数据类型映射 一、Elasticsearch SQL 连接器 Sink: BatchSink: Streaming Append & Upsert ModeElasticsearch 连接器…...

java中将Map集合、对象、字符串转换为JSON对象

1、Map集合转JSON对象 创建一个Map集合&#xff1b; 新建json对象&#xff0c;并将Map引入json中。 public void demo1(){ //创建一个Map集合Map<String, String> map new HashMap<>();map.put("1729210001","zhangsan");map.put("17292…...

理解Spring中bean的作用域

singleton:Spring Ioc容器中只会存在一个共享的Bean实例&#xff0c;无论有多少个Bean引用它&#xff0c;始终指向同一个对象&#xff0c;作用域为Spring中的缺省&#xff08;同一package&#xff09;作用域 prototype:每次通过Spring容器获取prototype定义的bean时&#xff0c…...

edge中以右键“打印”的方式“保存”当前页面的pdf形式,下载过程中卡进度的问题

目录 问题描述&#xff1a; 可能的问题&#xff1a; 解决&#xff1a; 问题描述&#xff1a; 特殊情况下需要保存网页的pdf形式&#xff0c;但页面没有类似“导出pdf”的功能按钮&#xff0c;可以通过页面右键“打印”的方式“保存”当前页面的pdf形式。在pdf文件下载过程中出…...

c# 使用OpenCV

C#和OpenCV的结合主要通过一个名为OpenCVSharp的库实现。OpenCVSharp是一个C#包装器&#xff0c;它提供了对OpenCV&#xff08;一个开源的计算机视觉和机器学习库&#xff09;功能的访问。 安装OpenCVSharp NuGet包&#xff1a; 在Visual Studio中&#xff0c;右键点击你的项目…...

数据库连接问题 - ChatGPT对自身的定位

1.一段关于数据库连接的技术性对话 sweetie&#xff0c;连接数据库的时候&#xff0c;需要在每次读写数据后就把连接释放吗&#xff1f; 亲爱的&#xff0c;连接数据库后&#xff0c;通常会在每次读写数据后将连接释放。这是为了确保数据库连接的及时释放和有效管理。如果不及…...

常见可视化大屏编辑器有哪些?

前言&#xff1a; 在当今数字化时代&#xff0c;可视化大屏编辑器成为了数据展示和决策支持的重要工具。大屏编辑器不仅仅是数据的呈现&#xff0c;更是数据背后的故事的讲述者。它通过图表、图形和实时数据的呈现&#xff0c;为用户提供了全面的信息视图&#xff0c;帮助用户更…...

利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)

利用海康威视相机拍出来的视频是H265格式的&#xff0c;相比于常规的H264编码&#xff0c;压缩率更高&#xff0c;但因此如果直接用正常取流方法读取&#xff0c;会出现无法读取的情况 1. 如图h265码流取出图片为灰屏 2 、解决灰屏问题 import subprocess import cv2# 将h265流…...

Android Uri scheme协议file转content

一、Uri的介绍 在Android开发中&#xff0c;Uri&#xff08;Uniform Resource Identifier&#xff09;是用于标识和访问各种资源的核心概念。这些资源可能包括文件、网络URL、数据库记录等。在处理这些资源时&#xff0c;我们可能会遇到不同的Uri协议&#xff0c;如file和conte…...

【Jenkins】远程API接口:Java 包装接口使用示例

jenkins-rest 库是一个面向对象的 Java 项目&#xff0c;它通过编程方式提供对 Jenkins REST API 的访问&#xff0c;以访问 Jenkins 提供的一些远程 API。它使用 jclouds 工具包构建&#xff0c;可以轻松扩展以支持更多 REST 端点。其功能集不断发展&#xff0c;用户可以通过拉…...

未能加载工具箱项问题的解决

解决办法是项目属性要设置成any cpu 在解决方案里的所有项目上右键&#xff0c;属性&#xff0c;生成&#xff0c;看目标平台是不是都设置成了any cpu...

算法模板之栈图文详解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️模拟栈1.1 &#x1f514;用数组模拟实现栈1.1.1 &#x1f47b;栈的定义1.1.…...

Ajax Search Pro Live WordPress网站内容实时搜索插件

点击阅读Ajax Search Pro Live WordPress网站内容实时搜索插件原文 Ajax Search Pro Live WordPress网站内容实时搜索插件是 WordPress 最好的实时搜索引擎插件。高度可定制&#xff0c;具有许多功能和选项&#xff0c;可提供最佳结果&#xff01;用更美观、更高效的搜索引擎替…...

mysql SQL执行超时问题

show variables like max_execution_time 使用这个命令查看了&#xff0c;没有设置sql执行超时时间&#xff0c;那么大概率问题就出在阿里的Druid数据库连接池出了问题 尝试着socketTimeout由60000毫秒改成10000毫秒&#xff0c;果然执行了十几秒就超时报错了 socketTime…...

51单片机基于时间片轮转的简单rtos

早就想写写这个了&#xff0c;正好赶上有点时间&#xff0c;写了一下基于51单片机的时间片轮转调度系统&#xff0c;简单的rtos&#xff0c;呵呵。直接上代码。 //基于51单片机时间片轮转的简单rtos。 #include"reg52.h" sbit led1 P2^7; sbit led2 P2^0; sbit key…...

python pycurl 安装使用

python pycurl 安装使用 本文主要讲下pycurl 安装使用. 1.安装 首先使用 pip 命令安装. pip install pycurl 输出如下: Collecting pycurlUsing cached pycurl-7.45.2.tar.gz (234 kB)ERROR: Command errored out with exit status 1:command: /usr/bin/python3 -c impor…...

C语言数据结构-排序

文章目录 1 排序的概念及运用1.1 排序的概念1.2 排序的应用 2 插入排序2.1 直接插入排序2.2 希尔排序2.3 直接排序和希尔排序对比 3 选择排序3.1 堆排序3.2 直接选择排序 4 交换排序4.1 冒泡排序4.2 快速排序4.2.1 挖坑法14.2.2 挖坑法24.2.3 挖坑法3 5 并归排序6 十万级别数据…...

Spring AOP入门指南:轻松掌握面向切面编程的基础知识

面向切面编程 1&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给…...

PlantUML Editor:5分钟学会用代码绘制专业UML图的终极工具

PlantUML Editor&#xff1a;5分钟学会用代码绘制专业UML图的终极工具 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为复杂的UML图表绘制而烦恼吗&#xff1f;PlantUML Editor是一款…...

基于Milvus混合检索与Java SpringBoot的全栈实现

阿里云有数千份产品文档&#xff0c;腾讯云有上万页技术规格&#xff0c;华为云的价格清单每天都在更新&#xff0c;开发者如何在浩如烟海的资料中&#xff0c;3秒内找到“ECS g6.2xlarge在华东区的按量计费价格”&#xff1f;传统关键词搜索解决不了语义理解&#xff0c;纯向量…...

Zotero插件市场:告别繁琐安装,开启高效学术插件管理新时代

Zotero插件市场&#xff1a;告别繁琐安装&#xff0c;开启高效学术插件管理新时代 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zoter…...

提示工程:从AI调教到结构化沟通的系统方法论

1. 项目概述&#xff1a;从“咒语”到“工程”的思维跃迁最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Hazrat-Ali9/Prompt-Engineering”。乍一看&#xff0c;这名字有点神秘&#xff0c;但点进去你会发现&#xff0c;它其实是一个关于“提示工程”的资源集合。这让我…...

面试时被问“你的缺点是什么”,这样回答反而加分

面试中&#xff0c;当面试官看似随意地问出“你的缺点是什么”时&#xff0c;空气往往会突然安静几秒。对软件测试工程师而言&#xff0c;这个问题尤其微妙——我们每天都在和“找茬”打交道&#xff0c;对缺陷和风险有着本能的敏感。然而&#xff0c;面试官抛出这个问题&#…...

3PEAK思瑞浦 TP2274-TS2R TSSOP14 精密运放

特性 增益带宽积:7MHz 高斜率:20V/us 宽供电范围:3.1V至36V或2.25V至18V 低失调电压:0.5mV(最大值) 低输入偏置电流:30pA(典型值) 轨到轨输出电压范围 单位增益稳定 工作温度范围:-40C至125C...

别再只拖控件了!VisionPro ToolBlock高级脚本入门:从变量声明到自定义运行记录的完整流程

别再只拖控件了&#xff01;VisionPro ToolBlock高级脚本入门&#xff1a;从变量声明到自定义运行记录的完整流程 在工业视觉检测领域&#xff0c;拖拽式图形界面曾让无数工程师快速入门&#xff0c;但当项目复杂度攀升时&#xff0c;那些隐藏在控件背后的脚本能力才是真正的效…...

localForage性能监控终极指南:实时追踪存储操作的关键指标

localForage性能监控终极指南&#xff1a;实时追踪存储操作的关键指标 【免费下载链接】localForage &#x1f4be; Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API. 项目地址: https://gitcode.com/gh_mirrors/lo/l…...

clipboardy在Windows环境下的完整部署:PowerShell与二进制回退方案详解

clipboardy在Windows环境下的完整部署&#xff1a;PowerShell与二进制回退方案详解 【免费下载链接】clipboardy Access the system clipboard (copy/paste) 项目地址: https://gitcode.com/gh_mirrors/cl/clipboardy clipboardy是一款强大的跨平台系统剪贴板访问工具&a…...

热销榜单:2026年深圳App开发公司推荐,揪出大众推荐的五大高口碑产品

在2026年、深圳的App开发公司凭借其创新能力逐渐崭露头角。在这个市场中解决方案、从电商到物联网设计美学赢得了用户信任&#xff1b;而本凡码农科技则专注于小程序定制、满足市场对便捷应用的追求。还有、云码科技伴随着创新技术提供了更高等灵活性&#xff0c;而晨曦科技结合…...