谈二级索引

news2024/11/28 12:35:18

前提:

在数据库中,1、索引分为聚簇索引和非聚簇索引两类。2、所有索引的数据结构都是树,查找树上的节点数据时通过用二分法来锁定数据范围,指定数据排序的规则,比如:有小到大,对比之后最终确定数据。

聚簇索引(Clustered Index)决定了数据在磁盘上的物理存储顺序,而且一个表只能有一个聚簇索引。在许多数据库系统中,如果表没有定义主键,那么通常会自动为表创建一个聚簇索引,这时主键索引就充当了聚簇索引的角色。当然如果有主键的时候(这个主键只能是直接手动创建,系统默认的不算),自己也可以创建聚簇索引(CREATE CLUSTERED INDEX idx_name ON table_name (column_name);)。

非聚簇索引则包括多种类型,其中包括普通索引、唯一索引、全文索引、空间索引等。

非聚簇索引的就是二级索引,当我们在数据库中频繁使用某一个列作为查询条件的时候,数据库会自动帮我们创建该列作为二级索引,一定要是非常频繁才行哦。

二级索引(非聚簇索引)有哪些呢?

在数据库中,二级索引也称为辅助索引或非聚簇索引,用于优化对非主键列的查询。以下是常见的二级索引类型:

普通索引(Non-Unique Index):最常见的二级索引类型。允许在索引列上有重复值,并且可以用于查找任意的匹配行。普通索引的创建可以提高对非聚簇索引列的查询效率,但可能会增加插入、更新和删除操作的开销。

唯一索引(Unique Index):与普通索引类似,但在索引列上要求唯一性,与主键索引不一样的是,主键索引的唯一性是针对主键列的,而唯一索引是针对普通索引。唯一索引可以确保索引列的值是唯一的,可以用于查找特定的匹配行,也用于加速对非聚簇索引列的查询。

联合索引(Composite Index)(也加多列索引或复合索引):联合索引是基于多个列创建的索引,允许在多个列上进行查询优化(在树查询先后是按照索引中列的顺序来,例如:c2,c3。那么先按照c2去找符合的,找到了就在找符合C3,以此确定数据。如果你的查询条件只有C3,那么这个索引就会失效,就是联合索引的最左匹配原则,在使用联合索引进行查询时,查询条件必须从联合索引的最左边的列开始,并且按照索引的顺序逐个连续的列进行匹配。只有当查询条件涵盖了联合索引的最左边的一组列时,数据库才能充分利用联合索引来优化查询,否则联合索引可能无法发挥作用,导致无法使用索引或进行回表操作。)。联合索引的创建可以提高联合索引列上的查询效率,尤其在多个列同时进行过滤条件时,避免多次全表扫描。

全文索引(Full-Text Index):全文索引用于对文本内容进行全文搜索,例如在文本字段中搜索关键词。它不同于普通索引,可以实现自然语言的全文检索,支持模糊匹配和相关性排序。

空间索引(Spatial Index):空间索引用于优化对空间数据(如地理坐标点、区域)的查询,例如查找在某个区域内的数据行。

哈希索引(Hash Index):哈希索引将索引列的值通过哈希函数映射为哈希码,然后使用哈希码进行索引。哈希索引适用于等值查询,但不支持范围查询。

需要注意的是,不同数据库管理系统对二级索引的支持和实现方式可能会有所不同,因此具体的索引类型和功能可能会因数据库而异。在设计数据库时,应根据实际需求选择适当的二级索引类型,以优化查询性能和满足业务需求。

mysql的二级索引

 

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

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

相关文章

Sequencer使用心得

在关卡序列中设置了触发蓝图的关键帧,为什么播放的时候没有触发蓝图事件呢? 在关卡序列中触发蓝图,一般是将蓝图添加到轨道中,设置触发器,在对应的关键帧中,绑定蓝图事件。 一般的话,点击播…

栈、队列、优先级队列详解【c++】

目录 🏀stack的介绍和使用⚽stack的介绍⚽stack的使用 🏀queue的介绍和使用⚽queue的介绍⚽queue的使用 🏀priority_queue的介绍和使用⚽priority_queue的介绍⚽priority_queue的使用 🏀总结 🏀stack的介绍和使用 ⚽s…

尝试-InsCode Stable Diffusion 美图活动一期

一、 Stable Diffusion 模型在线使用地址: https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型相关版本和参数配置: 活动地址 三、图片生成提示词与反向提示词: 提示词:realistic portrait painting of a japanese…

OPENMV的形状和颜色组合识别

使用openmv,通过阈值颜色和形状来去真假宝藏。调试过程发现颜色的阈值比较重要,因为不准的话,它会把一些颜色相近的物体也识别了。识别的精度有待提高,可以使用YOLOV5来精确识别,奈何本人没精力来弄这个。 打开机器视觉…

Proxmox VE 为 Windows 虚拟机添加硬盘遇到的问题

环境:PVE 8.x、Windows 11/Windows Server 2019 👉问题一: 为 windows 虚拟机添加磁盘,重启虚拟机后(在 windows 系统中重启)磁盘未能生效,并显示为橘色。 ❗橘色 意味需要重启VM才能生效&…

BIO实战、NIO编程与直接内存、零拷贝深入辨析-02

网络通信编程基本常识 什么是 Socket ? Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口,一般由操作 系统提供。在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议处理和…

RocketMQ学习笔记(基础篇)

目录 RocketMQ简介 单Master模式 多Master模式 多Master多Slave模式(异步) 多Master多Slave模式(同步) 双主双从集群 事务消息 事务消息发送及提交 事务补偿 事务消息状态 RocketMQ高级功能 消息存储 存储介质 消息的…

vue upload 下载

目录 上传 下载 get post 对象/文件流 download处理返回 文件流 axios.post 封装axios 后端直接返回文件流,打开下载文件是 [object Object],将res改成res.data即可 1.请求设置类型responseType: blob(如果没有设置,打…

14_Linux设备树下的platform驱动编写

目录 设备树下的platform驱动简介 运行测试 设备树下的platform驱动简介 platform驱动框架分为总线、设备和驱动,其中总线不需要我们这些驱动程序员去管理,这个是Linux内核提供的,我们在编写驱动的时候只要关注于设备和驱动的具体实现即可。在没有设备树的Linux内…

1770_VirtualBox下安装Debian

全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 作为我自己的日常使用,Debian基本上没有出现过。最多是让它运行在某个设备上作为一个服务的平台,因为很多东西我懒得去配置。 Debia…

前端 | (二)各种各样的常用标签 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 文章目录 📚HTML排版标签📚HTML语义化标签📚块级元素与行内元素📚文本标签🐇常用的文本标签🐇不常用的文本标…

模版模式在Spring中的应用

前言 模式模式在Spring中的应用较多,这里结合JdbcTemplate的源码来和大家一起学习下,更加深刻滴认识下模版模式,以便在日常开发中,能灵活运用模版模式,来减少重复代码,增强代码的可拓展性。 何为模版模式…

Python学习(七)

#字典 #字典的定义,同样是使用{},不过存储的元素是一个个的:键值对。如下语法: my_dict{"周杰伦":99,"林俊杰":99} print(f"字典的内容是:{my_dict},类型是:{type(my_dict)}"…

Vue条件渲染

v-if 和 v-show <body> <div id"root"><!--用v-show做条件渲染--> <!-- <h2 v-show"false">欢迎来到{{name}}</h2>--><!--使用v-if做条件渲染--><h2 v-if"false">欢迎来到{{name}}</h2&g…

一文读懂STM32芯片总线

目录 一、前言 二、总线基础知识概述 (1)、总线在芯片中的角色 (2)、总线的类型 (3)、总线的指标 (4)、AHB和APB 三、总线框架结构 (1)、结构类型 (2)、总线模块 (3)、总线交互 四、总结 一、前言 本篇介绍STM32芯片内部的总线系统结构&#xff0c;嵌入式芯片内部的…

C++11左值和右值、左值引用和右值引用浅析

从字面意思来讲&#xff0c;左值就是“能用在赋值语句等号左侧的内容&#xff08;它得代表一个地址&#xff09;”&#xff1b;右值就是不能作为左值的值&#xff0c;即右值不能出现在赋值语句中等号的左侧。C中的一条表达式&#xff0c;要么就是右值&#xff0c;要么就是左值&…

钉钉监控Hippo4j线程池通知报警

&#x1f680; 线程池管理工具-Hippo4j &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#…

软考03海明校验码

文章目录 前言一、练习一二、练习二总结 前言 海明校验码可以用来纠正错误 公式&#xff1a; 2k-1≥nk n为数据位&#xff0c;k为校验位 编码规则&#xff1a;校验位为2的次方&#xff0c;其他为数据位。 一、练习一 数据位为4&#xff0c;校验位最小为多少位&#xff1f; 答&…

《微服务架构设计模式》第十二章 部署微服务应用

内容总结自《微服务架构设计模式》 部署微服务应用 一、部署模式分类二、编程语言特定的发布包格式1、概述2、利弊 三、将服务部署为虚拟机1、概览2、利弊 四、将服务部署为容器1、概述2、利弊3、K8S部署 五、Serverless部署1、概述2、利弊3、示例 六、总结 一、部署模式分类 …

计算机丢失msvcp140.dll是什么意思?哪个修复方法更推荐

打开photoshop软件的时候&#xff0c;计算报错丢失msvcp140.dll是什么意思&#xff1f;软件也无法正常启动运行&#xff0c;这个主要的原因就是电脑系统中的msvcp140.dll文件丢失或者损坏了&#xff0c;运行需要该文件的程序或应用程序时&#xff0c;操作系统无法找到该特定的动…