【无标题】

regular table 

在 Oracle 中,"regular table" 通常指的是普通表,这种类型的表是一种基本的表类型,在数据库中存储数据行和列的基本方式都是采用普通表。 

普通表是 Oracle 数据库中最常见的一种表类型。其特点是所有数据都存储在磁盘上,并且需要预先定义并创建好表格结构。在普通表中,数据可以包括数字、文本、日期等不同类型的数据,并且可以定义各种类型的数据约束和表级别的约束来保证数据的完整性和准确性。普通表还支持各种 SQL 操作,例如 SELECT、INSERT、UPDATE 和 DELETE 操作等。

与普通表不同的是,Oracle 还提供多种高级表类型,如分区表、索引组织表、IOT 表等,它们有各自独特的优点和适用场景,可以更好地满足某些特定的业务需求。

Partitioned table

Partitioned table 是 Oracle 数据库中的一种高级表类型,它允许表数据分布在多个物理分区中存储,并且可以通过横向拆分表来提高性能和可维护性。通过使用分区表,可以将大型表拆分成较小的表,提高查询性能、减少数据冗余和增强物理数据安全性。同时,基于分区表的数据实现了更加高效和简单的备份和恢复。

分区表适用于存储具有大量数据和特定业务需求的表。例如,分区表可以按照时间、区域、产品等方式将表划分成多个独立的子表,从而方便查询、提高效率和减少资源消耗。在进行 SQL 操作时,Oracle 优化器可以自动识别需要访问哪个分区,并将操作仅应用于感兴趣的分区,从而提高查询性能和效率。

分区表的创建需要使用特殊的语法,并需要预先制定分区策略、分区键等相关设置,以确保数据的正确区分和管理。同时,在使用分区表时需要注意各种限制和操作规范,以保证表的正确使用和管理。

Index-Organized Table

Oracle 中的 Index-Organized Table (IOT) 是一种特殊的表类型,它的数据行存储在一个 B-tree 索引结构中,而不是像普通表一样存储在堆中。IOT 表的设计旨在提供快速的主键查找和基于索引的范围查询操作。

相较于普通表,IOT 表具有以下特点:

1. 数据存储方式:IOT 表的数据行直接存储在一个索引结构中,而不是分散存储在堆中。这使得主键查找变得非常快速,因为在索引中直接定位数据行。

2. 索引结构:IOT 表使用 B-tree 索引结构,可以支持不同类型的索引,包括唯一索引、范围索引和位图索引等。通过使用合适的索引,可以提高查询性能和减少存储空间。

3. 主键:IOT 表必须有主键,并且主键列的值是 IOT 表中的行数据的排序依据。这也意味着主键查询将非常高效。

4. 数据组织:IOT 表的数据行按照主键值的顺序存储在索引中,这有助于范围查询的性能优化。

尽管 IOT 表在某些场景下能够提供更高的查询性能,但它也有一些限制和适用条件。例如,对于经常进行数据更新和插入操作的表,IOT 表可能会导致索引节点频繁的分裂和合并,从而影响性能。因此,IOT 表的使用需要根据具体的业务需求和查询模式进行综合考虑。

Oracle Cluster 表是一种特殊类型的表,它是在物理上存储在一起的一组关联表。这些关联表被称为簇内表(clustered tables),它们共享相同的列集合和簇键。簇键是用于将行放入特定簇内表的列。

Oracle Cluster 表的设计旨在提高关联数据的存储效率和查询性能。通过将相关的行存储在物理上相邻的簇内表中,可以减少磁盘 I/O 操作和数据块之间的访问开销。当在簇内表之间执行连接操作时,Oracle 可以直接在物理上相邻的数据块之间进行访问,提高查询性能。

创建和管理 Oracle Cluster 表时,需要定义簇键和每个簇内表的结构。簇键是一个或多个列,用于将行分配到簇内表中的特定位置。簇内表可以包含任意数量的列,但所有簇内表都必须包含相同的列。

Cluster

使用 Oracle Cluster 表时需要注意以下几点:

1. Cluster 表的创建和管理需要额外的操作和注意事项,与普通表相比,它的维护较为复杂。

2. Cluster 表适用于具有关联关系的表,并且经常进行连接操作。它可以减少磁盘 I/O,提高查询性能。

3. Cluster 表需要更大的磁盘空间,因为相关的数据被存储在一起。另外,当对 Cluster 表进行 DML 操作时,可能需要对整个簇内表进行锁定。

总的来说,Oracle Cluster 表是一种用于提高关联数据存储和查询性能的特殊表类型,但其使用需要权衡维护复杂性和性能增益之间的权衡。在使用之前,需要仔细评估适用性和实际需求。

在oracle中的ROWID Format

在Oracle数据库中,ROWID是一个唯一标识表中每一行数据的字符串,由以下四个部分组成:

1. 数据对象号:占6个字符,它标识了包含行数据的表或者分区的对象的编号。

2. 相对文件号:占4个字符,它标识了存储行数据的表空间或者临时表空间的数据文件的编号。

3. 块号:占3个字符,它标识了数据文件中存储行数据的数据块的编号。

4. 行号:占6个字符,它标识在块中存储的行数据的位置偏移量。

因此,Oracle中ROWID的格式为:

  数据对象号.相对文件号.块号.行号

通过ROWID可以快速地定位和访问数据库中的特定行数据,因为它是唯一标识并直接与物理存储相关联的。但是需要注意的是,在使用ROWID时需要注意它的有效性和可移植性,因为ROWID是基于物理存储的,因此如果表被移动或重组,则可能会改变ROWID值。

创建表 
create table m(id int,name char(10));
insert into m values(0,'hsl');
insert into m values(1,'zhf');
insert into m values(2,'zgc');
select rowid,id,name from m;

 

creating temporary tables

创建临时表是在Oracle数据库中进行临时数据存储和处理的一种常见方法。临时表在会话结束时自动被删除,并且仅对创建它们的会话可见。

要创建一个临时表,您可以使用CREATE GLOBAL TEMPORARY TABLECREATE PRIVATE TEMPORARY TABLE语句。这两个语句的区别在于临时表的可见范围。

下面是使用CREATE GLOBAL TEMPORARY TABLE语句创建临时表的示例:

CREATE GLOBAL TEMPORARY TABLE temp_table (
  column1 datatype,
  column2 datatype,
  ...
);

下面是使用CREATE PRIVATE TEMPORARY TABLE语句创建临时表的示例:

CREATE PRIVATE TEMPORARY TABLE temp_table (
  column1 datatype,
  column2 datatype,
  ...
);

请注意,上述示例中的datatype应该替换为实际的数据类型,而column1column2等应替换为列名和相应的列定义。

创建临时表时,您也可以指定其他选项,例如存储参数、约束、索引等,以满足您的具体需求。

创建临时表后,您可以像任何其他表一样使用它们。但是请记住,临时表的数据只对创建它们的会话可见,并且在会话结束时会自动删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值