数据库——索引机制

server/2024/11/20 20:48:16/

目录

一、基础理论

search key

index file

二、ordered indices

定义:

主要类型:

三、Hash indices

定义:

溢出处理:

溢出桶:

溢出处理:

周期性重新哈希:

四、创建索引的语句

一、基础理论

索引是数据库中一个特殊的机制,用来提升速度——可以很快地访问到你想要的数据。

search key

        用于快速定位和检索存储在数据库中的数据的一种机制。搜索键可以是主键、外键、候选键、唯一键或索引键等。

index file

由search key和pointer组成。是对数据库某一个属性的处理。

分类:

1.ordered indices:搜索键是按顺序储存的。

2.hash indices:哈希索引,根据索引属性通过哈希函数映射到一个个桶中。

评价标准:

能否快速有效的找到数据

二、ordered indices

定义

顺序索引是指索引文件中的索引记录都是按照搜索键排好序的索引类型。

主要类型:

聚簇索引(cluster index):也叫主索引。形成一簇一簇的数据。

密度索引(Dense index):密集索引是指索引文件中每个搜索码值都对应一个索引项,即索引覆盖了数据表中的每一行。

稀疏索引(Sparse index):与密集索引相对。它只查找一部分索引。给索引分段然后进行查找。稀疏索引是指只为索引码的某些值建立索引项,不覆盖数据表中的所有行。

次级索引(Secondary index):主索引外的二级索引。

三、Hash indices

定义:

        哈希索引基于哈希表实现,哈希表是一种通过哈希函数将键值映射到特定位置的数据结构。对于数据库中的每一行数据,存储引擎都会对所有的索引列计算一个哈希码(Hash Code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

溢出处理:
溢出桶:

为了解决哈希表的溢出问题,通常会使用溢出桶。当某个桶已满时,新的元素会被插入到与该桶关联的溢出桶中。如果溢出桶也满了,则可能需要再创建一个新的溢出桶,如此循环。所有溢出桶通常会用链表链接在一起,形成一个溢出链。、

溢出处理

        在查找元素时,如果目标桶已满,则需要检查该桶的所有溢出桶中的记录,直到找到匹配的元素或遍历完所有溢出桶。

周期性重新哈希:

        负载变化或数据分布变化时,我们会周期性重新哈希是指在哈希表的使用过程中,定期地对哈希表进行重新构建(即重新计算哈希函数和重新分配存储位置),以应对哈希表的负载变化和数据分布变化,从而保持哈希表的性能,如查找、插入和删除操作的效率。

四、创建索引的语句

创建unique index

create index <index-name> on <relation-name>(<attribute-list>)

删除索引

drop index


http://www.ppmy.cn/server/143536.html

相关文章

Spring Boot 中 Druid 连接池与多数据源切换的方法

Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中&#xff0c;使用Druid连接池和进行多数据源切换是常见的需求&#xff0c;尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…

HarmonyOS Next 关于页面渲染的性能优化方案

HarmonyOS Next 关于页面渲染的性能优化方案 HarmonyOS Next 应用开发中&#xff0c;用户的使用体验至关重要。其中用户启动APP到呈现页面主要包含三个步骤&#xff1a; 框架初始化页面加载布局渲染 从页面加载到布局渲染中&#xff0c;主要包含了6个环节&#xff1a; 执行页…

vue2动态导出多级表头表格

需求&#xff1a;导出多级表格&#xff0c;如下&#xff0c;每个人名对应的是不同的城市金钱和年龄&#xff0c;日期占俩行&#xff0c;需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…

2024-11-19 kron积

若A[a11 a12; a21 a22]; B[b11 b12; b21 b22]; 则C[a11*b11 a12*b11 a21*b11 a22*b11; a11*b12 a12*b12 a21*b12 a22*b12; a11*b21 a12*b21 a21*b21 a22*b21; a11*b22 a12*b22 a21*b22 a22*b22] 用MATLAB实现 方法1&#xff1a; A [a11 a12; a21 a22]; B [b11 b12; b21 b22]…

线程(一)——初识线程

概念&#xff1a; 1、线程是什么 线程是一个“执行流”。每个线程之间可以按照自己的顺序执行自己的代码&#xff0c;多个线程之间还可以同时执行多份代码。 用银行来举例子&#xff1a;一个人去银行办理业务&#xff0c;多个业务一个人跑肯定是效率不高&#xff0c;这时候就需…

【1】猫眼娱乐后端开发面试题整理

[1]. 全量索引和增量索引的区别 全量索引&#xff1a;检索系统在启动时一次性读取当前数据库中的所有数据&#xff0c;建立索引。 增量索引&#xff1a;系统运行过程中&#xff0c;监控数据库的变化&#xff0c;即增量&#xff0c;实时加载更新&#xff0c;构建索引。 [2]. …

3D Gaussian Splatting 代码层理解之Part1

2023 年初,来自法国蔚蓝海岸大学和 德国马克斯普朗克学会的作者发表了一篇题为“用于实时现场渲染的 3D 高斯泼溅”的论文3d_gaussian_splatting。该论文提出了实时神经渲染的重大进步,超越了NeRF等以往方法的实用性。高斯泼溅不仅减少了延迟,而且达到或超过了 NeRF 的渲染质…

5个Midjourney技巧,让你的图片更自然真实,没有“AI味”

您是否觉得有些AI生成的图像看起来过于完美&#xff1f;有股AI味&#xff1f;MidJourney 可以创建非常高质量的逼真图像&#xff0c;然而画面完美无瑕、栩栩如生&#xff0c;让人感觉完美得令人不安&#xff0c;几乎不真实。 比如这个&#xff0c;有点夸张&#xff1a; 大多数…