Oracle的分区表和Local索引创建与维护

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  WHERE segment_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  WHERE segment_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 < to_date('01/01/2008','dd/mm/yyyy');

COUNT(*)

----------

6227

Execution Plan

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

0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=9)

1    0  SORT (AGGREGATE)

2    1    PARTITION RANGE (ALL)

3    2      INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2 Card=8 Bytes=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 < to_date('01/01/2007','dd/mm/yyyy');

COUNT(*)

----------

6154

Execution Plan

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

0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=9)

1    0  SORT (AGGREGATE)

2    1    INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2 Card=4 Bytes=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 < to_date('01/01/2007','dd/mm/yyyy');

COUNT(DISTINCT(OBJECT_NAME))

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

4753

Execution Plan

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

0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=75)

1    0  SORT (GROUP BY)

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

3    2      INDEX (RANGE SCAN) OF 'DBOBJS_IDX' (NON-UNIQUE) (Cost=2 Card=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 < to_date('01/01/2007','dd/mm/yyyy');

COUNT(DISTINCT(OBJECT_NAME))

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

4753

Execution Plan

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

0      SELECT STATEMENT Optimizer=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  WHERE segment_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  WHERE segment_name = 'DBOBJS';

SEGMENT_NAME        PARTITION_NAME      TABLESPACE_NAME

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

DBOBJS              DBOBJS_06            EYGLE

DBOBJS              DBOBJS_07            EYGLE

DBOBJS              DBOBJS_08            EYGLE

-The End-

By eygle on 2008-04-23 12:22 |

Comments (0) |

FAQ | 1892 |

oracle 建分区索引_Oracle的分区表和Local索引创建与维护相关推荐

  1. oracle表分区设计_ORACLE 分区表的设计

    ORACLE 分区表的设计 时间:2019-01-29 22:07作者:网友投稿 分区表的概念 分区致力于解决支持极大表和索引的关键问题.它采用他们分解成较小和易于管理的称为分区的片(piece)的方 ...

  2. oracle 建分区索引_Oracle分区索引

    索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区索引) 下面就来详细解 ...

  3. oracle拆分分区语法详解大全_oracle拆分分区表及重建索引

    分区表的好处,应该就是提高性能. 提高性能的套路,一般就是垂直扩展和水平扩展.垂直扩展就是换更强的服务器,水平扩展就是加更多的服务器.垂直扩展适合单机版,水平扩展常用于分布式系统.而传统的数据库,如o ...

  4. oracle表分区设计_Oracle数据库分区技术

    1.Oracle的分区技术基本原理: Oracle的分区技术的基本思路就是:分而治之. 2.分区概述 l 大数据对象(表.索引)被分成小的物理段 l 当分区表建立时,记录基于分区字段值被存储到相应分区 ...

  5. mysql 分区索引失效_分区表的本地索引竟然失效了——ORA-01502

    由于昨天对一个千万级别的分区表做了分区数据交换的操作,因为本表操作太慢,所以将其移出普通表操作后才移回分区表,但是今天又反馈该表的某字段为条件查询速度很慢,自己试了下果真如此,我看了查询语句的执行计划 ...

  6. oracle添加分区语句_oracle表分区增加分区

    昨天发现车辆轨迹库的表分区用完了,连夜加了分区,我们存轨迹的这张表建分区的时候按日期建只到2012-10-15,分区名从TAB_GPSBUSHIS_P1....TAB_GPSBUSHIS_P999,从 ...

  7. oracle 建分区索引_Oracle分区表及分区索引-创建list分区

    Oracle 分区表及分区索引 - 创建 list 分区 创建 list 分区的语法如上,需要我们指定的 : l column: 分区依赖列 ( 注意:只能是一个 ); l partition: 分区 ...

  8. oracle 建分区索引_ORACLE 创建组合分区索引

    我创建分区表的语句如下:CREATETABLET_JC_CFPARTITIONBYRANGE(KFTIME)SUBPARTITIONBYLIST(YY_ID)SUBPARTITIONTEMPLATE( ...

  9. oracle手动分区改为自动分区,oracle12c在线转换分区表,本地索引,自动按月间隔分区...

    SELECT count(*) FROM AAA_DATA;  --AAA话单数据表 SELECT count(*) FROM IPTV_HW_DATA;  --IPTV华为数据表 SELECT co ...

最新文章

  1. 牛客练习赛61 E 相似的子串(二分+哈希)难度⭐⭐⭐
  2. appium: adb server is out of date.killing
  3. 文巾解题 326. 3的幂
  4. Quartz-TriggerListener解读
  5. C++五子棋(四)——走棋原理及权值计算
  6. 学习使用RIA Framework Flex创建MySQL管理UI(初学Flex实例教程)
  7. BeetleX.Http.Clients访问https服务
  8. Python 代码注释
  9. MongoDB简单概述
  10. 实践:使用了CompletableFuture之后,程序性能提升了三倍
  11. 2020年中国网络安全市场全景图
  12. 机器学习--支持向量机(五)核函数详解
  13. Python3入门精通基础教程(合集)
  14. matlab mosek安装
  15. 理正深基坑弹性计算方法_【干货】关于深基坑计算的几点思考(一个实际项目的总结)...
  16. “2.17亿中国电信”拿下国家税务局云平台项目,H3C却是最大赢家
  17. 什么是rest?什么是restful?它们之间是什么关系
  18. 苹果A系列芯片的三年AI进化:为何要大规模升级AI算力?
  19. 教你如何修改ROS机器人工作空间文件夹名字
  20. [zoj 3587]Marlon's String[kmp]

热门文章

  1. war包安装jenkins时报错
  2. 电商的1000+篇文章总结
  3. 目标识别数据集扩充方法
  4. 硬件加密算法HITAG2流程分析
  5. SecureCRT for Linux
  6. 微信11个超级实用的小技巧,值得一试
  7. 微信小程序渗透测试技巧
  8. 7、Spring AOP使用
  9. xhr请求status是failed的解决办法
  10. 《阿凡达2》上映在即,3D渲染如何突破想象?