Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《Oracle Concept》第二章 - 17

《Oracle Concept》第二章 - 17

作者头像
bisal
发布于 2019-04-18 12:26:50
发布于 2019-04-18 12:26:50
3770
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1415485

这是杂货铺的第447篇文章

背景:

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

前言《Introduction to Oracle Database》的历史文章

《Oracle Concept》前言-12c内容补充

《Oracle Concept》前言介绍-7

《Oracle Concept》前言介绍-6

《Oracle Concept》前言介绍-5

《Oracle Concept》前言介绍-4

《Oracle Concept》前言介绍-3

《Oracle Concept》前言介绍-2

《Oracle Concept》前言介绍-1

《Oracle Conecpt》 - 目录结构

《Oracle Conecpt》 - 初步认识1

第二章《Tables and Table Clusters》 历史文章

《Oracle Concept》第二章 - 16

《Oracle Concept》第二章 - 15

《Oracle Concept》第二章 - 14

《Oracle Concept》第二章 - 13

《Oracle Concept》第二章 - 12

《Oracle Concept》第二章 - 11

《Oracle Concept》第二章 - 10

《Oracle Concept》第二章 - 9

《Oracle Concept》第二章 - 8

《Oracle Concept》第二章 - 7

《Oracle Concept》第二章 - 6

《Oracle Concept》第二章 - 5

《Oracle Concept》第二章 - 4

《Oracle Concept》第二章 - 3

《Oracle Concept》第二章 - 2

《Oracle Concept》第二章 - 1

本文主题:第二章《Tables and Table Clusters》 - Overview of Tables。

创建哈希聚簇

聚簇键,就像索引聚簇键一样,是聚簇中各张表共享的一个单独的列或复合键。哈希键值是插入聚簇键列的真实值或可能的值。例如,如果聚簇键是department_id,那么哈希键值可能是10、20、30,等等。

Oracle数据库使用一个哈希函数,他可以接受无限个哈希键值作为输入,对他们排序分到一组有限个数的桶(bucket)中。每个桶会有一个唯一的数值类型ID,叫做哈希值。每个哈希值会映射到数据库中存储这个哈希键值(department是10、20、30,等等)对应的数据行所在的块地址上。

为了创建一个哈希聚簇,可以用创建索引聚簇一样的CREATE CLUSTER语句,只是增加一个哈希键。聚簇中哈希值的个数取决于哈希键。在下面的2-9示例中,department的个数可能有100个,所以哈希键设置100,

在创建employees_departments_cluster后,就能在聚簇中创建employees和departments表。然后将数据加载到哈希聚簇中,就像索引聚簇的用法一样,

参考:

《Oracle Database Administrator's Guide》可以了解如何创建和管理哈希聚簇。

哈希聚类检索

要明确的是,是数据库,而不是用户,决定如何对用户输入的键值做哈希。例如,假设用户经常执行如下的检索,输入不同的department部门ID字段p_id:

如果用户要检索department_id=20的雇员,数据库会将此值哈希成77号桶。如果用户要检索department_id=10的雇员,数据库会将此值哈希成15号桶。数据库会用这个内建的哈希值来定位包含请求部门内雇员信息的数据块。下图描述了一个哈希聚簇段作为一组行的数据块。正如图中所示,一次检索只要一次物理IO。

哈希聚簇的限制就是无法在非索引的聚簇键上执行范围扫描(参考“索引范围扫描”一章)。假设哈希聚簇中没有独立的索引,检索ID值在20和100之间的department部门,就不能用哈希算法,因为无法将20和100之间的每一个可能的值都做哈希。因为没有索引,数据库就必须执行一次全表扫描。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年03月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Oracle Concept》第二章 - 16
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。 本文主题:第二章《Tables and Table Clusters》 - Overview of Tables。
bisal
2019/03/15
3560
《Oracle Concept》第二章 - 16
《Oracle Concept》第三章 - 3
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/06/14
4630
《Oracle Concept》第二章 - 16
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。 本文主题:第二章《Tables and Table Clusters》 - Overview of Tables。
bisal
2019/03/19
2840
《Oracle Concept》第三章 - 5
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/91453540
bisal
2019/06/15
4210
《Oracle Concept》第三章 - 6
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/06/15
5180
《Oracle Concept》第二章 - 22 (12c内容补充)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/89666608
bisal
2019/05/10
6710
《Oracle Concept》第二章 - 22 (12c内容补充)
《Oracle Concept》第三章 - 2
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/06/14
4610
《Oracle Concept》第二章 - 15
表簇是一组在相同数据块中共享普通列并存储相关数据的表。当表被簇集后,一个数据块就能包含多张表的行。例如一个数据块能存储来自employees和departments表的行,而不会仅仅存储一张表的行。
bisal
2019/03/15
3410
《Oracle Concept》第三章 - 8
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/07/01
4510
《Oracle Concept》第三章 - 8
《Oracle Concept》第三章 - 7
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/06/21
3700
《Oracle Concept》第三章 - 7
《Oracle Concept》第二章 - 21 (12c内容补充)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/89522990
bisal
2019/05/10
8710
《Oracle Concept》第二章 - 21 (12c内容补充)
《Oracle Concept》第三章 - 9
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
bisal
2019/07/03
4030
《Oracle Concept》第三章 - 9
《Oracle Concept》第三章 - 1
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/90206552
bisal
2019/05/17
5320
《Oracle Concept》第三章 - 1
《Oracle Concept》第三章 - 12
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bisal
2019/09/18
4210
《Oracle Concept》第三章 - 4
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/90828930
bisal
2019/06/11
3500
《Oracle Concept》第二章 - 13
数据库用数据块来存储行数据。表中每行会包含不多于256列的数据。如果可能,Oracle会将每行作为单独的行片存储。然而,如果一行的所有数据不能插入单独的一个数据块,或者对现有行数据的更新,导致一行数据超过了数据块的容量,此时数据库就会使用多个行片存储这一行(参考“数据块格式”)。簇表中的行和非簇表的行包含相同的信息。此外,簇表中的行还会包含指向他们所属的簇键的信息。
bisal
2019/03/15
3580
Oracle处理IN的几种方式
最近看到一些IN语句的优化案例,有些环节不是很理解,重读一下dbsnake的书中关于IN处理方式的介绍,以下内容算是学习笔记。
bisal
2021/01/27
2.1K0
Oracle处理IN的几种方式
MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧
MySQL数据库,从入门到精通:第一篇——MySQL概念详解 MySQL数据库,从入门到精通:第二篇——MySQL关系型数据库与非关系型数据库的比较 MySQL数据库,从入门到精通:第三篇——MySQL 数据库规范和基础查询语句 MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法 MySQL数据库,从入门到精通:第五篇——MySQL排序和分页 MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧 MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用 MySQL数据库,从入门到精通:第八篇——MySQL聚合函数实战探究:优化SELECT过程助力高效查询 MySQL数据库,从入门到精通:第九篇——MySQL子查询 MySQL数据库,从入门到精通:第十篇——MySQL表创建和管理指南 MySQL数据库,从入门到精通:第十一篇——MySQL数据处理之增删改指南 MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解 MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解 MySQL数据库,从入门到精通:第十四篇——MySQL视图详解 MySQL数据库,从入门到精通:第十五篇——MySQL存储过程和函数详解 MySQL数据库,从入门到精通:第十六篇——MySQL变量、流程控制和游标详解 MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项 MySQL数据库,从入门到精通:第十八篇——MySQL 8新特性全解析
默 语
2024/11/20
2130
MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧
expdp导出表关联数据的功能
通过数据泵导出的时候,除了能导出表的数据,其实可以导出多张表关联的数据,这个确实之前没碰到过。
bisal
2021/11/30
7450
第06章_多表查询
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠 “部门编号” 进行关联。
程序员Leo
2023/08/07
2760
第06章_多表查询
相关推荐
《Oracle Concept》第二章 - 16
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档