99%的应用在使用到表的时候,都是使用堆表。Heap,这是一个无序的空间,插入的数据会找到一个合适的位置来存储,带有随机性,而不是按插入的顺序来存储。所以,在全表扫描的时候,返回的数据是按照空间检索的顺序来找到并返回记录。
索引组织表
和堆表相比起来,索引组织表的所有的数据都是保存在索引的数据结构里面,存在索引段里面而非表段,所有的数据插入都是有序的放置在指定的连续的块,索引就是数据。这样做的好处就是在通过主键索引查询的时候,能够获得更快的查询速度。代价则是由于索引是很复杂的数据结构,在插入新数据的时候,相比起堆表来会有很多更复杂的动作,对性能有一定的影响。
数据的存储更加紧密,相邻的数据都在相同的块里面,带来的好处就是减少了IO的操作,同时提高了缓存的可用性命中率。
创建的关键字为 organization index
聚簇, 聚簇表,聚簇索引的概念对比
聚簇是一个定义,一种数据保存的方式: 把相关联的数据放在同一个块里面。
create cluster emp_dept_cluster (id number);
聚簇表: 采用聚簇方式建立的表,和普通的表的区别是,需要定义聚簇的名字,以及相关的聚簇键
create table dept
(
id number primary,
name varcahr2(20),
location varcahr2(20)
)
cluster emp_dept_cluster(id);
emp_dept_cluster:为表创建的聚簇,聚簇名
Id: 聚簇的建立是基于id的值
聚簇索引:
这种索引和其他索引并无太大区别,只是他指向的是一个聚簇块。 一般的索引指向的是数据块。
create index emp_dept_cluster_idex on cluster emp_dept_cluster;
索引聚簇表
如果许多表有相同的列,那么这组表都保存到相同的数据块中,(A.id=B.id),等到这些个表需要进行关联的时候,就能以很小的IO代价找到这两个id列所在的块进行匹配。从概念上讲是对表的join进行了“预链接”, 提高join的效率
另外也会把同一个表里面把数据按列分组存储,目标只有一个,那就是减少IO,加快检索的速度。
创建的方法和正常创建的区别就是在列定义后面增加了 cluster参数
从以上的特性可以看出,如果需要频繁修改,全表扫描,频繁Truncate 或者是需要分区的情况下,都不能使用聚簇表。
而只读情况下,聚簇表就很适用。
散列聚簇表:
这种聚簇表和索引聚簇表的唯一区别就在于,没有索引,他通过聚簇块里面列的值,算出一个散列值x23j87d,然后这个值来找到整个row的位置。而索引聚簇表,通过聚簇快的索引,找到相应的行的rowId.
创建散列聚簇:
create cluster emp_dept_cluster (id number) hashkeys 1000;
在聚簇上建表:
create table dept
(
id number primary,
name varcahr2(20),
location varcahr2(20)
)
cluster emp_dept_cluster(id);
使用这种表的的一个好处,是单条数据查询,join非常快。 但是连续区间的查询就非常慢,需要进行全表扫描。
临时表
使用create global temporrary table temp_table
这种表的内容只存在于回话期间,在回话结束的时候就会清理。首先在性能上非常的卓越。几乎没有redo,所以没有IO。 同时,清理表,也不需要delete语句。
所以相比使用普通表来作为临时表的方法,这种真正的临时表在性能上有着巨大的优越性。
一个使用的误区:
很多时候使用临时表的目的,把很多个查询语句的结果集放到一个临时表里面insert,最后把这个结果集select出来,进行其他的处理。这种方法没有错,但是相比起把所有的小select 语句union成一个大的select语句,然后去处理结果集,这种后者的效率要高很多。
外部表
数据表存储在数据库外面,就像是普通的文件一样。通常是用作想数据库加载数据。 10g以后还引入了外部表卸载功能,更加方便了数据库之间数据的移动。
相关推荐
Oracle表结构生成工具是一种实用程序,它允许用户利用Excel电子表格快速创建Oracle数据库的表结构。这个工具的主要目的是提高数据库设计的效率,特别是在处理大量数据表定义时。下面将详细介绍这个工具及其工作原理...
8. **测试与验证**:完成表结构迁移后,必须进行充分的测试,确保新创建的Oracle表能够正常工作,所有业务逻辑和查询都能正确执行。 总的来说,SQL Server到Oracle的表结构转换涉及了数据库设计、编程和数据库管理...
"Oracle表结构导Word工具"就是为了解决这个问题而设计的,它能够将Oracle数据库中的表结构方便快捷地导出成Word文档,使得信息更易于阅读和共享。 这个工具的核心功能在于自动化生成表结构的详细文档,包括表名、...
### 如何让Oracle表及字段显示为区分大小写 #### Oracle内部表存储原理与区分大小写的实现 在深入了解如何让Oracle表及字段显示为区分大小写之前,我们需要先理解Oracle内部是如何存储表和字段的。Oracle数据库...
"Oracle表转实体类工具"是一种实用的开发辅助软件,它能自动化地将Oracle数据库中的表结构转换为Java实体类代码,极大地提高了开发效率。这个工具能够自动分析表的字段、数据类型,并生成对应的Java属性,同时还能...
本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据文件后的恢复策略。 首先,我们来看如何使用`DROP DATAFILE`命令删除数据文件。这个命令允许管理...
Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...
利用DBMS_SPACE包对Oracle 表碎片进行监控与清理,
Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...
"导出Oracle表结构工具"就是这样一个实用程序,它简化了这个过程。 DBExport是一个专门设计用于Oracle数据库的工具,它能够快速高效地导出表结构和数据。标题中的"DBExport2.51 For ORACLE"指的是该工具的特定版本...
标题与描述均提到了“六分钟学会创建Oracle表空间的步骤”,这暗示了文章旨在提供一个快速学习如何在Oracle数据库中创建表空间的教程。Oracle表空间是数据库中用于存储数据的一个逻辑容器,每个表空间由一个或多个...
quartz-2.2.1的oracle表的SQL脚本,有需要的同学欢迎下载。
Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了
Quartz2.X Oracle 表结构建表语句和字段注释,可用于Quartz的持久化配置
oracle表空间不足报错的解决 。。。。。。。。。。。。。。。。。。。。。。
oracle创建分区表
ORACLE表空间大小统计语句,比较详细的。。。。
linux系统下创建oracle表空间和用户权限查询,安装Oracle系统时可以用到。
Oracle 表空间详解 Oracle 表空间是 Oracle 数据库中一个非常重要的概念,它是数据库中存储空间的逻辑概念。由于 Oracle 数据库可以存储大量的数据,但是数据文件大小受操作系统的限制,而过大的数据文件对数据的...
Oracle 表空间与数据文件 Oracle 表空间是 Oracle 数据库中一个逻辑集合,包含一个或多个数据文件。表空间是 Oracle 数据库中的一个逻辑存储对象,用于存储永久段、临时段和回滚段等数据。 Oracle 表空间分类有...