首页 > 数据库 >《Oracle Concept》第三章 - 4

《Oracle Concept》第三章 - 4

时间:2023-06-19 10:31:41浏览次数:50  
标签:Concept 第三章 包含 叶子 索引 键值 Oracle 分支


背景:

按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。



本文主题:第三章《Indexes and Index-Organized Tables》 - Overview of Indexes。


B树索引

B树索引,是平衡树的缩写,他是数据库索引中最常用的一种类型。一个B树索引是一种将数值有序划分到不同范围的列表。通过将键值和一行或一定范围的行进行关联,B数能为这种范围检索提供极佳的查询性能,包括精确匹配和范围匹配两种检索方式。


下图(3-1)就是B树索引的结构。示例展示了department_id列上的索引,他是employees表的外键。

《Oracle Concept》第三章 - 4_键值


分支块和叶子块

一个B树索引有两种类型的块:分支块用于检索,叶子块用于存储数值。B树索引上层的分支块会包含指向下层索引块的索引数据。在上图3-1种,根分支块含有0-40的项,他指向了下一层分支块最左侧的块。这个分支块包含了诸如0-10和11-19的项。这些项中的每一个都包含了落在这个范围内指向键值的叶子块。


B树索引是平衡的,因为所有的叶子块都会自动地存储在同一个深度下。因此,从索引中检索任何数据大约花费的时间都是相同的。索引的高度是指需要从根块到叶子块访问的数据块的个数。分支层级等于高度减1。在图3-1中,索引高度是3,分支层级是2。


分支块存储的是需要在两个键值间做权衡中最小的键值前缀。这种技术能让数据库在每个分支块上尽可能多地适应数据。分支块会包含一个指针,他指向包含键值的子块。键和指针的个数受数据块容量的限制。


叶子块则包含每一个被索引的数据值,以及用来定位真实行的rowid。每项会根据(key, rowid)排序。在一个叶子块中,每个键值和rowid都会关联他的左侧和右侧兄弟项。叶子块自己也会双向关联。在图3-1中,最左侧的叶子块(0-10)会关联到第二个叶子块(11-19)。


注意:

字符类型列的索引会基于数据库字符集中的字符二进制值进行排序。


标签:Concept,第三章,包含,叶子,索引,键值,Oracle,分支
From: https://blog.51cto.com/u_13950417/6511352

相关文章

  • oracle固定执行计划
    文档课题:oracle固定执行计划.本文介绍oracle固定执行计划的2种方法,outline,SQLProfile,其中SQLProfile是重点。1、outline1.1、相关概念开发环境中SQL的执行无问题,但在生产环境执行效率却异常缓慢。若此时更改SQL需重新修改及编译源程序,成本非常高。此时可使用outline在不改变......
  • ORACLE如何找出视图依赖的对象和视图嵌套层数
    之前写过一篇文章“SQLServer如何找出视图依赖的对象和视图嵌套层数”,这里我介绍一下Oracle数据库中如何找出视图的依赖对象以及视图嵌套层数关系。主要通过DBA_DEPENDENCIES这个系统视图(这个系统视图中包含有对象的依赖关系数据)。另外,我们使用了Oracle的树形查询(层级查询)来展示这......
  • 在 Cenntos6.8 下安装 Oracle11g
    安装所需文件如下1.一台装有CentOS 6.8x64的服务器(虚拟机也可)2. linux.x64_11gR2_database_1of2.zip3.linux.x64_11gR2_database_2of2.zip"系统要求如下1.SWAP分区大于3G1.Oracle安装目录剩余空间大于20G2.Centos6.x系统安装centos系统首先我们要安装一个带Xwi......
  • Oracle 扩容 SGA ORA-27104
    问题概述某客户一套19c生产环境在主机层面对内存进行了扩容,DBA随后对数据库的SGA的大小进行调整,调整完重启实例时报ORA-27104,无法正常启动实例。如下图所示,SGA原大小为8G,现调整为32G闭实例,再启动实例到nomount状态,提示ORA-27104报错: 问题原因查看数据库alert日志:提示‘Systemcann......
  • Oracle常用统计
     测试,这是测消息 1.按天selectto_char(t.STARTDATE+15/24,'YYYY-MM-DD')as天,sum(1)as数量fromHOLIDAYtgroupbyto_char(t.STARTDATE+15/24,'YYYY-MM-DD')--ORDERby天NULLS LAST;  selecttrunc(t.STARTDATE,'DD')as天,sum(1)as......
  • Oracle 分组统计,按照天、月份周和自然周、月、季度和年
     1.按天selectto_char(t.STARTDATE+15/24,'YYYY-MM-DD')as天,sum(1)as数量fromHOLIDAYtgroupbyto_char(t.STARTDATE+15/24,'YYYY-MM-DD')--ORDERby天NULLSLAST; selecttrunc(t.STARTDATE,'DD')as天,sum(1)as数量fromHOLIDAY......
  • Oracle 三种分页方法
    Oracle的三层分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER()OVER()1.使用ROWNUM ROWNUM是Oracle中一个伪列,它用于表示返回的行的序号。使用ROWNUM进行分页查询的方法是在SELECT语句中加入WHERE子句,并在WHERE......
  • oracle中rownum和row_number()
     oracle中rownum和row_number() row_number()over(partitionbycol1orderbycol2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进......
  • oracle与MySQL数据库之间数据同步的技术要点
    1,需求描述某ORCALE11生产数据库(下称源数据库),内含近万个表,需要从中每日同步几十个表的数据到mySQL5.7数据库(下称目标数据库)中,供第三方使用。需要对生产数据库影响越小越好。2,技术挑战数据类型不完全一致。从Oracle中导出的建表语句到MySQL数据库中不一定能运行,因为二者的数据......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊
    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle、MySQL、PostgreSQL等数据库的安装配置、故障处理、性能优化等日常实践操作,以及常用脚本、注意事项等总结记录,分享给大家:Oracle优质技术文章概念梳理&安装配置Oracle的rwp之旅Oracle之HashJoinOr......