数据库索引小结

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新表中的数据;

即:在数据之外,数据库维护着满足特定算法的数据结构,这些数据结构以某种方式引用数据,这样就能在这些数据结构上实现高级查找算法,这样的数据结构就是索引;

为表建立索引也是有代价的,索引需要占用额外的存储空间以及更新数据的同时可能要更新索引;


如图:若需要加快第二列的查找速度,例如(SELECT Col1,Col2 FROM TABLE_NAME WHERE Col2 = 22),在没有索引的情况下,数据库管理系统只能顺序搜索,时间复杂度为O(N),这在有着海量数据的数据库内很难实现;在建立索引之后,我们通过搜索索引的这棵二叉搜索树来找到对应数据的地址,这样我们能在log2(N)下查找数据;


根据数据库的功能,索引的种类主要有三种:唯一索引,主键索引,聚集索引

唯一索引:不允许任意两行的索引值相同,例如:在表中员工姓名列上创建唯一索引之后,公司不能有同姓名的员工;

主键索引:数据库中有一列,用于唯一的标识数据库中的每一行,该列被称为主键,在查询中使用主键,能允许主键对数据的快速访问;

聚集索引:在聚集索引中,表中行的物理顺序与键值的索引顺序相同,一个表只能包含一个聚集索引;


数据库占用空间巨大,一般存在于磁盘中,磁盘在每次读取数据时,会从这个位置开始,将后面的一部分数据也读进内存,这就是磁盘预读,依据了计算机科学里的局部性原理:当前数据被访问,其附近的数据被用到的可能性会很大,操作系统一般将主存和磁盘存储区分为大小相等的存储块,每个存储块称为一页;

数据库利用磁盘预读原理,将每个节点的大小设置为一页,这样一个节点只需要一次I/O;

B-Tree中一次检索,需要h-1次I/O(根节点常驻内存);复杂度为O(h)=O(logdN);B-Tree的出度d一般非常大,使得树的深度h很小;而红黑树h明显要深的多,所以效率不及B-Tree;

在MySQL中使用B+Tree,B+树的所有数据存在叶子节点上,非叶子节点上没有指向数据的指针,并且将所有叶子节点用一个链表相连;

所以B+树有两种搜索方法:

1. 与B树相同,从根节点开始搜索,都需要走完树的所有层(B树不一定);

2. 通过链表顺序搜索;


综上,创建索引的优点:

1. 通过创建唯一性索引,保证数据库表中每一行的唯一性;

2. 大大加快对数据的检索速度,也是创建索引主要的原因;

3. 加速表与表之间的连接;

4. 在使用分组和排序子句进行数据减速时,缩短分组和排序的时间;


索引的缺点:

1. 创建索引和维护索引需要时间与空间;

2. 数据更新时索引也要更新,降低数据更新速度;


我们应该在这些列上创建索引:主键列;数据有唯一性的列;经常需要搜索的列;经常用在连接的列;经常需要通过范围进行搜索的列;经常需要排序的列;经常使用在WHERE子句中的列;

我们不应该在这些列上创建索引:在查询中很少使用到的列;数据值很少的列(如:性别列,婚姻状况列),这种采用位图索引效率很高;

对修改性能的要求远高于检索性能的列,修改性能与检索性能是矛盾的;

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值