创建与维护Oracle分区表和本地索引

oracle创建分区表以及索引 一、分区表索引的分类 1、分区表原理: 对于10gR2而言,ORACLE对于分区表方式其实就是将表分段存储,一般普通表格是一个段存储,而分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在那个分区或那几个内部,然后在分区内部去查找数据,一个分区一 般保证四十多万条数据就比较正常了, 2、分区表的分类: •    Range(范围)分区 range分区方式,也算是最常用的分区方式,其通过某字段或几个字段的组合的值,从小到大,按照指定的范围说明进行分区,我们在INSER 阅读详情


【原文: http://www.searchdatabase.com.cn/showcontent_12937.htm 】

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 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 ptimizer=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 ptimizer=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 ptimizer=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 ptimizer=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 

pandas,构造MultiIndex的四种方法:from_tuples、from_arrays、from_product、from_frame 1、from_tuples:通过 “元组对” 构造MultiIndex """ 一对元组,为一个索引 """ tuples = [(1, 'red'), (1, 'blue'), (2, 'red'), (2, 'blue')] pd.MultiIndex.from_tuples(tuples, names=('number', 'color')) 2、from_arrays:通过 “列表元素的组合” 构造MultiIndex """ 列中表的元素,按位置 对应组合,形成索引 """ arrays 阅读详情

相关推荐

【数据集】中国广泛时空水质数据集(1980-2022)

简介中国广泛时空水质数据集(1980-2022)

WW、forever的博客 3911

oracle表分区的创建维护、查询、索引

oracle表分区的创建维护、查询、索引

monkey00001的博客 2813

养生足浴预约小程序源码.zip

养生足浴预约小程序源码,足浴养生作为一个服务行业,它的消费次数频繁,用户不受局限,所以商机大,竞争也强。小程序的应用,可以为用户提供在线预约技师,前后端完整代码包括本店动态,养生知识,养生项目预约,技师预约,后台预约项目人数时段设定,预约名单导出,预约名单管理,预约核销等功能,采用腾讯提供的小程序云开发解决方案,无须服务器域名。养生足浴预约小程序源码,足浴养生作为一个服务行业,它的消费次数频繁,用户不受局限,所以商机大,竞争也强。小程序的应用,可以为用户提供在线预约技师,前后端完整代码包括本店动态,养生知识,养生项目预约,技师预约,后台预约项目人数时段设定,预约名单导出,预约名单管理,预约核销等功能,采用腾讯提供的小程序云开发解决方案,无须服务器域名。养生足浴预约小程序源码,足浴养生作为一个服务行业,它的消费次数频繁,用户不受局限,所以商机大,竞争也强。小程序的应用,可以为用户提供在线预约技师,前后端完整代码包括本店动态,养生知识,养生项目预约,技师预约,后台预约项目人数时段设定,预约名单导出,预约名单管理,预约核销等功能,采用腾讯提供的小程序云开发解决方案,无须

oracle自动分区如何创建本地索引吗,创建管理Oracle分区表本地索引

Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个组件。以下是对于分区及本地索引的一个示例。1、首先根据字典表创建一个测试分区表SQL> connect eygle/eygleConnected.SQL> CREATE TABLE dbobjs2 (OBJECT_ID NUMBER NOT NULL,3...

weixin_39562185的博客 1197

Oracle-创建索引分区

对大数据量索引进行分区同样能够优化应用系统的性能。一般来说,如果索引所对应的表的数据量非常大,比如几百万甚至上千万条数据,则索引也会占用很大的空间,这时,建议对索引进行分区。   Oracle索引分区分为本地索引分区全局索引分区两种:全局索引不反映基础表的结构,因此,若要分区就只能进行范围分区;而局部索引反映基础表的结构。 本地索引分区   本地索引分区就是使用分区表同样的分区键进...

weixin_30367169的博客 160

Oracle分区表索引

导致全局索引失效,本地索引因为分区已经drop掉了,也就不存在索引失效的说法了,drop分区时指定update global indexes全局索引不会失效。导致全局索引本地索引都失效,split分区时指定update global indexes全局索引不会失效,split相关的分区本地索引可以重建。导致全局索引失效,不会导致本地索引失效,truncate分区时指定update global indexes全局索引不会失效。不会导致全局本地索引失效。...

viviliving的专栏 8662

oracle 建分区索引_创建维护Oracle分区表本地索引(一)

Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个组件。以下是对于分区及本地索引的一个示例。首先根据字典表创建一个测试分区表SQL>connecteygle/eygleConnected.SQL>createTABLEdbobjs2(OBJECT_IDNUMBERNOTNULL,3O...

weixin_39630498的博客 860

oracle本地索引维护,创建维护Oracle分区表本地索引(三)

对于非分区表的测试:SQL>createTABLEdbobjs22(object_idNUMBERNOTNULL,3object_nameVARchar2(128),4createdDATENOTNULL5);Tablecreated.SQL>createINDEXdbobjs_idx2ONdbobjs2(created);Indexcrea...

weixin_42371234的博客 213

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

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

weixin_35733495的博客 229

oracle10G分区的创建维护Oracle分区表本地索引

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

oracel数据库、数据仓库、JAVA开发的专栏 1557

oracle symonym_Oracle的同义词(synonyms)总结

Oracle的同义词总结:从字面上理解就是别名的意思,试图的功能类似。就是一种映射关系。1.创建同义词语句:createpublicsynonymtable_nameforuser.table_name;其中第一个user_table第二个user_table可以不一样。此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问...

weixin_39639286的博客 212

oracle创建维护

1、Oracle中数据库对象命名原则        必须由字母开始,长度在1-30个字符之间        名字中只能包含A-Z,a-z,0-0,_,$#        同一个Oracle服务器用户所拥有的对象名字不能重复。        名字不能为Oracle的保留字        名字是大小写不敏感的 2、创建表的语法       CREATE TABLE [schem

scream_1992的博客 437

Oracle表的管理之创建维护

这里主要记录一下Oracle中关于表的创建维护的操作。 一、表名规范:  1.字母开头  2.长度不超30字符  3、不能使用保留字 二、数据类型: 在学习Oracle之前,有必要了解一下Oraclesql中不同的数据类型。Oracle中没有sql那么多的类型。  1、char 定长 最大2000字符,查询比较快,适用于经常要查询的语句  2、varchar2 变长 最大400

李黎敏 ——为优秀j2ee架构师而努力 602

创建管理Oracle分区表本地索引

     在网上看到eygle写的一篇关于分区表本地索引的文章,感觉总结的挺好,特转了过来。      Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个组件。以下是对于分区及本地索引的一个示例。   首先根据字典表创建一个测试分区表:       SQL&gt; connect eygle/...

weixin_34246551的博客 180

PostgreSQL 并发约束实战(第 1 篇):排他约束如何挡住并发重复预约

两个用户同时预订会议室 A 的 10:00—11:00。两个请求都先查询“没有冲突”,随后各自插入一条预约,两个事务也都成功提交。SQL 没报错,唯一键没有重复,会议室却被卖了两次。PostgreSQL 真正形成差异的地方,不是比另一种数据库多几个数据类型,而是能把“同一资源的时间段不得重叠”变成提交时持续成立的数据库约束。这篇文章只证明这一个判断。它不证明 PostgreSQL 在所有 OLTP 场景都优于 MySQL,也不证明所有业务规则都应该塞进数据库。

weixin_42426485的博客 505

单文件部署的MQTT轻量级物联网数据平台

变量 `value` 为设备上报的原始值,支持 `+ - * / % **` 及 `abs round min max pow int float sqrt`,如 `value / 10 - 40`。- **全局**:点击左侧导航「**报警信息**」,可直接查看当前账号可见范围内**未消除的报警**,每条显示时间、设备、产品、属性、报警类型(超上限 / 低于下限)、当前值阈值。删除 `iot.db`( `db.key`)会重置为默认账号 admin/admin123,但**会清空所有数据,慎用**。

u012320127的博客 312
上一篇: Oracle数据库中索引的维护
下一篇: 一个C++中的Heap Corrupt错误的分析
zdleek
博客等级 码龄25年 98粉丝 67原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值