集簇

简介:
集簇是一组表的集合,这些表有一个共同的列。对表进行集簇时需要注意下面的原则:
 对于应用程序连接语句中经常用在一起访问的表可以考虑创建集簇;
 那些很少进行连接的表不要创建聚合;
 如果应用程序经常对某个表进行全表扫描也不要创建集簇;
 如果经常选择主表和子表,则要创建集簇;
 如果表中具有相同的键值,但是这些键值占空间超过1个或2个数据块时,不宜创建
集簇;
 如果各个键值对应的行差异太大就不宜创建集簇。
例1。下面语句创建一个集簇(cluster)名字为 personnel,它带的索引键列(cluster key column)
为department_number。一个集簇大小是512字节:

CREATE CLUSTER personnel
( department_number NUMBER(2) )
SIZE 512
STORAGE (INITIAL 100K NEXT 50K);
例2。加表到建立好的集簇里去。这里将emp和dept表加到personnel集簇中:
dept tables to the cluster:
CREATE TABLE emp
(empno NUMBER PRIMARY KEY,
ename VARCHAR2(10) NOT NULL
CHECK (ename = UPPER(ename)),
job VARCHAR2(9),
mgr NUMBER REFERENCES scott.emp(empno),
hiredate DATE
CHECK (hiredate < TO_DATE (’08-14-1998’, ’MM-DD-YYYY’)),
sal NUMBER(10,2) CHECK (sal > 500),
comm NUMBER(9,0) DEFAULT NULL,
deptno NUMBER(2) NOT NULL )
CLUSTER personnel (deptno);
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(9),
loc VARCHAR2(9))
CLUSTER personnel (deptno);
例3. 下面语句在集簇键personnel上创建一个集簇索引(cluster index)
CREATE INDEX idx_personnel ON CLUSTER personnel;
当创建完集簇索引(cluster index)后,就可以往emp和dept表中插入数据了。


Hash 簇
哈希集簇(Hash Clusters)也是一种类似于集簇表的方法。但在等价查询中比一般的索引表
或索引集簇(index cluster)还要好。
哈希集簇由一个哈希函数对每行的键值来使用表数据。所有行的相同键值在硬盘中被存放在
一起。
何时创建Hash 簇
是否创建哈希集簇,主要考虑下面原则:
 对那些在使用中经常被访问的列,并且这些列经常使用等式的一组表可以创建哈希聚
合。
 对于非定的集簇键,如果空间能容纳下将来所存放的所有行才能创建哈希集簇。
 如果空间不足,不要考虑创建哈希集簇。
 如果在应用经常采用全表扫描,则不要创建哈希集簇。
 那些经常被修改集簇键值的表不宜创建哈希集簇。

 创建Hash 簇
使用CREATE CLUSTER 语句再后面加 HASHKEYS 保留字就可以创建哈希集簇。见下面例子:
例1.创建哈希集簇(Hash Cluster ) :
下面语句创建一个哈希集簇名字为personnel ,集簇键列为department_number,哈希键值最大
为500字节;每个键值为512字节:
CREATE CLUSTER personnel
( department_number NUMBER )
SIZE 512 HASHKEYS 500
STORAGE (INITIAL 100K NEXT 50K);
这个例子忽略了 HASH IS 子句,这样Oracle就使用内部哈希函数来创建这个集簇。
例2.创建哈希集簇(Hash Cluster ) :
下面语句创建一个哈希集簇名字为personnel ,集簇键列由home_area_code和home_prefix组
成,并且为这两个列使用了哈希函数:
CREATE CLUSTER personnel
( home_area_code NUMBER,
home_prefix NUMBER )
HASHKEYS 20
HASH IS MOD(home_area_code + home_prefix, 101);
目录
相关文章
|
Java 关系型数据库 MySQL
基于java swing和mysql实现的仓库商品管理系统(源码+数据库+运行指导视频)
基于java swing和mysql实现的仓库商品管理系统(源码+数据库+运行指导视频)
362 0
|
C++ Windows
(1)Qt的基本数据类型以及基本输出
这篇文章介绍了Qt框架中的基本数据类型和日志输出方法,包括如何使用QDebug类及其相关函数进行调试和日志记录,以及如何取消输出时的空格和字符串引号,还提供了抑制输出的两种方式。
362 4
(1)Qt的基本数据类型以及基本输出
|
10月前
|
编解码 网络协议
如何轻松地 rip 3D Blu-ray:详细步骤指南
随着3D电影和家庭影院的普及,越来越多的人希望将3D Blu-ray电影转换为数字文件,以便在多种设备上播放。本文介绍了使用DVDFab、MakeMKV+HandBrake和Leawo Blu-ray Ripper等软件轻松rip 3D Blu-ray的方法,帮助用户享受高质量的3D观影体验。这些工具不仅提供了便捷性和高质量的输出,还能节省存储空间。
629 9
|
10月前
|
数据可视化 Python
使用OpenPyXL在Excel中创建折线图:数据可视化入门
本文介绍了如何使用Python的`openpyxl`库在Excel中创建折线图,包括安装库、加载Excel文件、定义数据范围、设置图表属性(如标题、轴标签)及保存文件等步骤,适合数据可视化初学者。
439 15
|
10月前
|
数据采集 存储 消息中间件
构建高效数据管道:从数据采集到分析的实战指南
在数据的海洋中航行,我们需要精准而高效的工具来捕捉、传输和处理信息。本文将引导你穿越技术性文章的迷雾,用简洁明了的语言和代码示例,展现如何打造一个高性能的数据管道。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的知识财富。让我们一起解锁数据的力量,探索其背后的奥秘。
272 15
|
消息中间件 Kafka API
深入解析Kafka消息传递的可靠性保证机制
深入解析Kafka消息传递的可靠性保证机制
257 0
|
10月前
|
安全 算法 网络协议
ip地址https证书免费试用—政企单位专用
IP地址HTTPS证书为基于公网IP的服务提供加密保护,JoySSL等机构提供免费试用,帮助政企用户降低安全成本。用户需注册账号、申请证书、提交CSR并验证IP所有权,最后安装证书并测试。免费证书有效期短,但能有效保障数据安全,提升用户信任度及合规性。
|
10月前
|
人工智能 数据可视化 数据处理
告别编码难题,低代码平台让应用开发更简单!#高效开发
在数字化时代,企业对应用开发的需求日益增长,低代码平台JeeLowCode应运而生,通过可视化开发、高效数据处理、强大的技术核心和AI智能辅助,大幅降低了开发门槛,提升了开发效率与应用质量,支持多种数据库和丰富的插件生态,旨在让开发变得更简单、更高效,促进企业数字化转型。
159 9
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
2068 1
|
SQL 弹性计算 Cloud Native
分布式事务 GTS 的价值和原理浅析
GTS 今年双 11 的成绩 今年 2684 亿的背后,有一个默默支撑,低调到几乎被遗忘的中间件云产品——GTS(全局事务服务,Global Transaction Service),稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。
4474 83
分布式事务 GTS 的价值和原理浅析