创建与管理Oracle分区表和本地索引的相关知识是本文我们主要要介绍的内容,我们知道,Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个组件。以下是对于分区及本地索引的一个示例。

首先根据字典表创建一个测试分区表:

SQL>connect eygle/eygle

Connected.

SQL>CREATE TABLE dbobjs

2 (OBJECT_ID NUMBER NOT NULL,

3 OBJECT_NAME varchar2(128),

4 CREATED DATE NOT NULL

5 )

6 PARTITION BY RANGE (CREATED)

7 (PARTITION dbobjs_06 VALUES LESS THAN (TO_DATE('01/01/2007', 'DD/MM/YYYY')),

8 PARTITION dbobjs_07 VALUES LESS THAN (TO_DATE('01/01/2008', 'DD/MM/YYYY')));

Table created.

SQL>COL segment_name for a20

SQL>COL PARTITION_NAME for a20

SQL>SELECT segment_name, partition_name, tablespace_name

2 FROM dba_segments

3 WHEREsegment_name='DBOBJS';

SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME

-------------------- -------------------- ------------------------------

DBOBJS DBOBJS_06 EYGLE

DBOBJS DBOBJS_07 EYGLE

创建一个Local索引,注意这里可以将不同分区的索引指定创建到不同的表空间:

SQL>CREATE INDEX dbobjs_idx ON dbobjs (created) LOCAL

2 (PARTITION dbobjs_06 TABLESPACE users,

3 PARTITION dbobjs_07 TABLESPACE users

4 );

Index created.

这个子句可以进一步调整为类似:

CREATE INDEX dbobjs_idx ON dbobjs (created) LOCAL

(PARTITION dbobjs_06 TABLESPACE users,

PARTITION dbobjs_07 TABLESPACE users

) TABLESPACE users;

通过统一的tablespace子句为索引指定表空间。

SQL>COL segment_name for a20

SQL>COL PARTITION_NAME for a20

SQL>SELECT segment_name, partition_name, tablespace_name

2 FROM dba_segments

3 WHEREsegment_name='DBOBJS_IDX';

SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME

-------------------- -------------------- ------------------------------

DBOBJS_IDX DBOBJS_06 USERS

DBOBJS_IDX DBOBJS_07 USERS

SQL>insert into dbobjs

2 select object_id,object_name,created

3 from dba_objects where created

6227 rows created.

SQL>commit;

Commit complete.

SQL>select count(*) from dbobjs partition (DBOBJS_06);

COUNT(*)

----------

6154

SQL>select count(*) from dbobjs partition (dbobjs_07);

COUNT(*)

----------

73

我们可以通过查询来对比一下分区表和非分区表的查询性能差异:

SQL>set autotrace on

SQL>select count(*) from dbobjs where created

COUNT(*)

----------

6227

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENTptimizer=CHOOSE(Cost=1Card=1Bytes=9)

1 0 SORT (AGGREGATE)

2 1 PARTITION RANGE (ALL)

3 2 INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2Card=8Bytes=72)

Statistics

----------------------------------------------------------

0 recursive calls

0 db block gets

25 consistent gets

0 physical reads

0 redo size

380 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

1 rows processed

SQL>select count(*) from dbobjs where created

COUNT(*)

----------

6154

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENTptimizer=CHOOSE(Cost=1Card=1Bytes=9)

1 0 SORT (AGGREGATE)

2 1 INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2Card=4Bytes=36)

Statistics

----------------------------------------------------------

0 recursive calls

0 db block gets

24 consistent gets

0 physical reads

0 redo size

380 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

1 rows processed

SQL>select count(distinct(object_name)) from dbobjs where created

COUNT(DISTINCT(OBJECT_NAME))

----------------------------

4753

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENTptimizer=CHOOSE(Cost=1Card=1Bytes=75)

1 0 SORT (GROUP BY)

2 1 TABLE ACCESS (BY LOCAL INDEX ROWID) OF 'DBOBJS' (Cost=1Card=4Bytes=300)

3 2 INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2Card=1)

Statistics

----------------------------------------------------------

0 recursive calls

0 db block gets

101 consistent gets

0 physical reads

0 redo size

400 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

1 sorts (memory)

0 sorts (disk)

1 rows processed

对于非分区表的测试:

SQL>CREATE TABLE dbobjs2

2 (object_id NUMBER NOT NULL,

3 object_name VARCHAR2(128),

4 created DATE NOT NULL

5 );

Table created.

SQL>CREATE INDEX dbobjs_idx2 ON dbobjs2 (created);

Index created.

SQL>insert into dbobjs2

2 select object_id,object_name,created

3 from dba_objects where created

6227 rows created.

SQL>commit;

Commit complete.

SQL>select count(distinct(object_name)) from dbobjs2 where created

COUNT(DISTINCT(OBJECT_NAME))

----------------------------

4753

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENTptimizer=CHOOSE

1 0 SORT (GROUP BY)

2 1 TABLE ACCESS (BY INDEX ROWID) OF 'DBOBJS2'

3 2 INDEX (RANGE SCAN) OF 'DBOBJS_IDX2' (NON-UNIQUE)

Statistics

----------------------------------------------------------

0 recursive calls

0 db block gets

2670 consistent gets

0 physical reads

1332 redo size

400 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

1 sorts (memory)

0 sorts (disk)

1 rows processed

当增加表分区时,LOCAL索引被自动维护:

SQL>ALTER TABLE dbobjs

2 ADD PARTITION dbobjs_08 VALUES LESS THAN (TO_DATE('01/01/2009', 'DD/MM/YYYY'));

Table altered.

SQL>set autotrace off

SQL>COL segment_name for a20

SQL>COL PARTITION_NAME for a20

SQL>SELECT segment_name, partition_name, tablespace_name

2 FROM dba_segments

3 WHEREsegment_name='DBOBJS_IDX';

SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME

-------------------- -------------------- ------------------------------

DBOBJS_IDX DBOBJS_06 USERS

DBOBJS_IDX DBOBJS_07 USERS

DBOBJS_IDX DBOBJS_08 EYGLE

SQL>SELECT segment_name, partition_name, tablespace_name

2 FROM dba_segments

3 WHEREsegment_name='DBOBJS';

SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME

-------------------- -------------------- ------------------------------

DBOBJS DBOBJS_06 EYGLE

DBOBJS DBOBJS_07 EYGLE

DBOBJS DBOBJS_08 EYGLE

关于创建与管理Oracle分区表和本地索引的相关知识及实例就介绍到这里了,如果您想了解更多关于Oracle数据库的知识,可以看一下这里的文章:http://database.51cto.com/oracle/,希望本次的介绍能够对您有所收获!

【编辑推荐】

【责任编辑:赵鹏 TEL:(010)68476606】

点赞 0

oracle自动分区如何创建本地索引吗,创建与管理Oracle分区表和本地索引的实例解析...相关推荐

  1. oracle自动恢复数据库文件,只有数据文件情况下恢复Oracle数据库

    只有数据文件情况下恢复数据库 1,创建几个表,进行 log switch SQL> create table t9 as select * from dba_tables; Table crea ...

  2. oracle自动分区maxvalue,对Maxvalue上限范围分区进行spilt操作

    Oracle分区表是对关键数据表,特别是海量数据表的一种普适性很好的技术方案.借助分区表,通常都可以有效的提升数据表访问性能,增强系统可管理能力.对分区表设计通常具有三个方面的决策点,分别为分区类型分 ...

  3. oracle自动分区maxvalue,分区表中的maxvalue参数设置-Oracle

    分区表中的maxvalue参数设置 结论:partition p3 values less than (maxvalue)   分区表中maxvalue如果用具体参数来代替,则整个表中可插入的最大值不 ...

  4. oracle占用内存 100,System表空间占用率100%,管理Oracle系统审计

    C:\Users\user>sqlplus sys/********@lin_solgle as sysdba SQL*Plus: Release 11.2.0.1.0 Production o ...

  5. 本地计算机策略无法建立管理单元,我的本地安全策略用不了!打开管理工具的本地安全策略管理单元初始化 爱问知识人...

    现象:运行gpedit.msc 提示如下: 管理单元初始化失败. 名称:组策略 CLSID:{8FC0B734-A0E1-11D1-A7D3-0000F87571E3} 解决: 方法一.1.点击『开始 ...

  6. oracle10G分区的创建与维护Oracle分区表和本地索引

    Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用.从产品上说,分区技术是Oracle企业版中独立收费的一个组件.以下是对于分区及本地索引的一个示例. Oracle的分区技术在 ...

  7. oracle分区属于什么知识,详细讲解Oracle表分区的相关概念及其优点

    Oracle 8i以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组大表在物理一级的可管理性.将大表分割成较小的分区可以改善表的维护.备份.恢复.事务及查询 ...

  8. ES索引的生命周期管理

    ES索引的生命周期管理 介绍 ​ ES可用于索引日志类数据,在此场景下,数据是源源不断地被写入到索引中.为了使索引的文档不会过多,查询的性能更好,我们希望索引可以根据大小.文档数量或索引已创建时长等指 ...

  9. oracle10g 创建分区表,oracle10G分区的创建与维护Oracle分区表和本地索引

    Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用.从产品上说,分区技术是Oracle企业版中独立收费的一个组件.以下是对于分区及本地索引的一个示例. Oracle的分区技术在 ...

最新文章

  1. 216位攻城狮送给程序猿的10个新年礼物
  2. CSS3动画之百度钱包
  3. fwrite函数的一般调用形式是什么?
  4. jsp页面路径问题(404)
  5. 自动驾驶轻松开发?华为云ModelArts赋能智慧出行
  6. 【Qt教程】1.9 - Qt5菜单栏、工具栏、状态栏、核心窗口、浮动窗口、QMainWindow
  7. 基于迁移学习的辣椒病虫害搜索模型(裁剪病害区)
  8. matlab轴向柱塞泵动力学仿真,基于ADAMS柔性模型的轴向柱塞泵动力学仿真
  9. YOLO系列目标检测算法-YOLOv2
  10. node.js中操作数据库
  11. 【通俗理解】股票、基金、证券、债券、信托、期货、国债、外汇
  12. 汽车CAN总线入门,通俗易懂
  13. 5.11 按照文字的笔划进行数据的排序 [原创Excel教程]
  14. ABeam (德硕)News | 喜提「SAP BTP 最佳实施合作伙伴」奖项
  15. R语言-神经网络包RSNNS
  16. 启动tomcat闪退如何获取报错信息
  17. 计算机的储存器包括内存储器和外存储器,内存储器和外存储器的分类与区别
  18. 关于剪枝对象的分类(weights剪枝、神经元剪枝、filters剪枝、layers剪枝、channel剪枝、对channel分组剪枝、Stripe剪枝)
  19. 51单片机红外电子密码锁【红外对管矩阵键盘数码管LCD1602显示模块】
  20. firefox网页自动翻译

热门文章

  1. torch.nn 介绍(部分)
  2. 在spring boot中打印mybaits执行的sql
  3. WPF DataGrid 获取选中的当前行某列值
  4. lambda表达式不使用委托(delegate) 用FUNC
  5. 在K3凭证处理中的部份实用操作
  6. 第十五章:交互式界面(十一)
  7. 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
  8. slf4j+log4j在Java中实现日志记录
  9. Concurrent and Parallel
  10. Rancher Labs联手NeuVector,提供容器管理与安全解决方案