一、定义说明

oracle数据库中,存在多种对象,最常见的表和索引,索引的目的是为了加快查询;oracle建议一个表>2g时,就建议进行分区,分区表的好处此处省略,分区表有维护操作,但是某些维护操作对整个表的索引维护造成巨大开销,因此本地索引就是解决分区表管理的问题。

非分区索引创建方式,create index index_name on table_name(column_name);

查询索引状态从dba_indexes->status列查询

全局分区索引创建,create index index_name on table_name(column_name) global partition by range(column_name) (partition p1 values less than (11104) tablespace system,partition p2 values less than (11100) tablespace users,partition p3 values less than (maxvalue) tablespace sysaux.) or partition by hash (id) partitions 8 online等;

查询索引状态dba_ind_partitions->STATUS列查询

查询分区索引类型,是全局or本地 DBA_PART_INDEXES ->LOCALITY

本地分区索引创建,create index index_name on table_name(column_name) local;

查询索引状态dba_ind_partitions->STATUS列查询

二、create/selet 说明

) 非分区索引
SQL> create index ind_1 on range_part_tab(deal_date);
Index created.
SQL> select index_name,PARTITION_NAME,HIGH_VALUE,STATUS,TABLESPACE_NAME from dba_ind_partitions where index_owner='SYS' and index_name='IND_1'; no rows selected SQL> select index_name,STATUS,GLOBAL_STATS,TABLESPACE_NAME from dba_indexes where owner='SYS' and index_name='IND_1'; INDEX_NAME STATUS GLO TABLESPACE_NAME
------------------------------ -------- --- ------------------------------
IND_1 VALID YES SYSTEM STATUS 表示一个非分区索引是否VALID或UNUSABLE GLOBAL_STATUS 对于分区索引,指示是通过分析整个索引(YES)来收集统计信息,还是根据基础索引分区和子分区(NO)的统计信息进行估计
)全局分区索引

create index ind_3 on range_part_tab(area_code) global partition by range(area_code) (partition p1 values less than (11104) tablespace system,partition p2 values less than (11100) tablespace users,partition p3 values less than (maxvalue) tablespace sysaux)
*
ERROR at line 1:
ORA-14037: partition bound of partition "P1" is too high

12:39:59 SYS@ceshi>select area_code,count(*) from range_part_tab group by area_code;

AREA_CODE COUNT(*)
---------- ----------
599 11104
594 11074
596 11021
593 11113
595 10927
592 11214
598 11235
591 11169
597 11143

9 rows selected.  全局范围分区索引,第一个分区不能比所有的值都大

SYS@ceshi>create index ind_3 on range_part_tab(area_code) global partition by range(area_code) (partition p1 values less than (592) tablespace system,partition p2 values less than (11100) tablespace users,partition p3 values less than (maxvalue) tablespace sysaux);

Index created.

select index_name,PARTITION_NAME,HIGH_VALUE,STATUS,TABLESPACE_NAME from dba_ind_partitions where index_owner='SYS' and index_name='IND_3'

INDEX_NAME PARTITION_ HIGH_VALUE STATUS TABLESPACE_NAME
---------- ---------- ------------------------------ -------- ------------------------------
IND_3 P1 592 USABLE SYSTEM
IND_3 P2 11100 USABLE USERS
IND_3 P3 MAXVALUE USABLE SYSAUX

PARTITION_NAME 索引的分区名称

HIGH_VALUE    索引分区的范围条件

STATUS       分区索引的状态

SYS@ceshi>select index_name,table_name,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,LOCALITY,DEF_TABLESPACE_NAME from DBA_PART_INDEXES where index_name='IND_3';

INDEX_NAME TABLE_NAME PARTITION SUBPARTIT PARTITION_COUNT LOCALI DEF_TABLESPACE_NAME
---------- ------------------------------ --------- --------- --------------- ------ ------------------------------
IND_3 RANGE_PART_TAB RANGE NONE 3 GLOBAL SYSTEM

hash全局分区索引,使用场景较多,例如索引块争用,且表为非分区表时

SYS@ceshi>create table a1 as select * from range_part_tab;

SYS@ceshi>create index ind_4 on a1(id) global partition by hash (id) partitions 8 online;

Index created.

SYS@ceshi>alter index ind_4 parallel 1;

Index altered.

select index_name,PARTITION_NAME,HIGH_VALUE,STATUS,TABLESPACE_NAME from dba_ind_partitions where index_owner='SYS' and index_name='IND_4'

INDEX_NAME PARTITION_NAME HIGH_VALUE STATUS TABLESPACE_NAME
------------------------------ ------------------------------ ---------- -------- ------------------------------
IND_4 SYS_P61 USABLE SYSTEM
IND_4 SYS_P62 USABLE SYSTEM
IND_4 SYS_P63 USABLE SYSTEM
IND_4 SYS_P64 USABLE SYSTEM
IND_4 SYS_P65 USABLE SYSTEM
IND_4 SYS_P66 USABLE SYSTEM
IND_4 SYS_P67 USABLE SYSTEM
IND_4 SYS_P68 USABLE SYSTEM

8 rows selected.

SYS@ceshi>select index_name,table_name,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,LOCALITY,DEF_TABLESPACE_NAME from DBA_PART_INDEXES where index_name='IND_4';

INDEX_NAME TABLE_NAME PARTITION SUBPARTIT PARTITION_COUNT LOCALI DEF_TABLESPACE_NAME
------------------------------ ------------------------------ --------- --------- --------------- ------ ------------------------------
IND_4 A1 HASH NONE 8 GLOBAL SYSTEM

 )  本地分区索引  

SQL> create index ind_2 on range_part_tab(id) local;

Index created.

select index_name,PARTITION_NAME,HIGH_VALUE,STATUS,TABLESPACE_NAME from dba_ind_partitions where index_owner='SYS' and index_name='IND_2'

INDEX_NAME PARTITION_ HIGH_VALUE STATUS TABLESPACE_NAME
------------------ -----------------------------------------------------------------------------------------------------------------------
IND_2 P1 TO_DATE(' 2017-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P10 TO_DATE(' 2017-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P11 TO_DATE(' 2017-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P12 TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P2 TO_DATE(' 2017-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P3 TO_DATE(' 2017-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P4 TO_DATE(' 2017-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P5 TO_DATE(' 2017-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P6 TO_DATE(' 2017-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P7 TO_DATE(' 2017-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P8 TO_DATE(' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P9 TO_DATE(' 2017-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') USABLE SYSTEM
IND_2 P_MAX MAXVALUE USABLE SYSTEM

13 rows selected.

SYS@ceshi>select index_name,table_name,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,LOCALITY,DEF_TABLESPACE_NAME from DBA_PART_INDEXES where index_name='IND_2';

INDEX_NAME TABLE_NAME PARTITION SUBPARTIT PARTITION_COUNT LOCALI DEF_TABLESPACE_NAME
---------- ------------------------------ --------- --------- --------------- ------ ------------------------------
IND_2 RANGE_PART_TAB RANGE NONE 13 LOCAL

三、索引的重建

非分区索引:

SQL> alter index ind_1 rebuild;

全局分区索引:

SQL> alter table range_part_tab move partition p1;

Table altered.

SQL> select TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME from dba_tab_partitions
where TABLE_OWNER='SYS' and TABLE_NAME='RANGE_PART_TAB';

TABLE_NAME PARTITION_ TABLESPACE_NAME

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

RANGE_PART_TAB P1 SYSTEM

RANGE_PART_TAB P10 SYSTEM

RANGE_PART_TAB P11 SYSTEM

SQL> select index_name,PARTITION_NAME,HIGH_VALUE,STATUS,TABLESPACE_NAME

from dba_ind_partitions where index_owner='SYS' and index_name='IND_3';

INDEX_NAME PARTITION_ HIGH_VALUE           STATUS   TABLESPACE_NAME

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

IND_3      P1         592                  USABLE   SYSTEM

IND_3      P2         11100                USABLE   USERS

IND_3      P3         MAXVALUE             USABLE   SYSAUX

SQL> alter index ind_3 rebuild partition p1;

Index altered.

全局分区索引,单个分区的move并不会导致全局分区索引的失效

本地分区索引

select index_name,PARTITION_NAME,STATUS,TABLESPACE_NAME
from dba_ind_partitions where index_owner='SYS' and index_name='IND_2';
INDEX_NAME PARTITION_ STATUS   TABLESPACE_NAME
---------- ---------- -------- ------------------------------
IND_2      P1         USABLE   SYSTEM
IND_2      P10        USABLE   SYSTEM
IND_2      P11        USABLE   SYSTEM
IND_2      P12        USABLE   SYSTEM

SQL> alter table range_part_tab move partition p1;

Table altered

SQL> alter index ind_2 rebuild partition p1;

Index altered.

全局(Global) 与本地(Local)索引的区别的更多相关文章

  1. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  2. Oracle非分区索引,全局分区索引和本地分区索引。

    1.如果按照索引是否分区作为划分依据,Oracle 的索引类型可以分为非分区索引,全局分区索引和本地分区索引. 2.创建演示实例 --创建非分区表create table test_partition ...

  3. Windows下nodejs 模块配置 全局模式与本地模式的区别

    第1步:下载.安装文件 (nodejs的官网http://www.nodejs.org/download/ ) 第2步:安装相关模块环境 打开C:\Program Files\nodejs 目录你会发 ...

  4. [学习笔记]nodejs全局安装和本地安装的区别

    参考来源于 nodejs全局安装和本地安装的区别 1.全局安装 $ npm install gulp --global 2.作为项目的开发一开(devDependencies)安装 $ npm ins ...

  5. oracle的局部本地分区索引

    环境:oracle 12.2.0.1 注:未确定10g,11g是否有这些特性.现在基本不用10g,主要用12c,11g. 毫无疑问,这种 特性对于dba或者实施人员而言显得很重要,尤其当你的数据库主要 ...

  6. python中全局global和局部nonlocal命名空间

    python中全局global和局部nonlocal命名空间 局部名称空间对全局名称空间的变量可以引用,但是无法改变. count = 1 def func1(): count = 2 print(c ...

  7. oracle唯一索引与普通索引的区别和联系以及using index用法

    oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...

  8. B+树索引和哈希索引的区别——我在想全文搜索引擎为啥不用hash索引而非得使用B+呢?

    哈希文件也称为散列文件,是利用哈希存储方式组织的文件,亦称为直接存取文件.它类似于哈希表,即根据文件中关键字的特点,设计一个哈希函数和处理冲突的方法,将记录哈希到存储设备上. 在哈希文件中,是使用一个 ...

  9. MySQL单列索引和组合索引的区别介绍

    MySQL单列索引和组合索引的区别介绍 作者:佚名出处:IT专家网2010-11-22 13:05 MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有 ...

随机推荐

  1. 码云插件Gitee:Couldn't get the list of Gitee repositories

    20:02 Couldn't get the list of Gitee repositories Can't get available repositories Not Found

  2. 十二、持久层框架(MyBatis)

    一.PageHelper分页插件的使用 PageHelper是一款MyBatis的分页插件,只需要简单的配置,然后直接调用方法就可以. 1.配置PageHelper插件 在mybatis-config ...

  3. Oracle11g版本中未归档隐藏参数

    In this post, I will give a list of all undocumented parameters in Oracle 11g. Here is a query to se ...

  4. python-time,datetime

    1.time模块:time.time() # 返回当前时间的时间戳(1970纪元后经过的浮点秒数)time.localtime([ sec ]) # 接收时间戳(默认为当前时间),返回struct_t ...

  5. mac navicate破解版汉化

    https://pan.baidu.com/s/1dRoalG8lZ-AMGmZrj8OhpQ 提取密码:e8ad 安装完navicate之后解压zh-Hans.zip 点击Resources文件夹 ...

  6. 01背包问题之2(dp)

    01背包问题之2 有n个物品,重量和价值分别为wi和vi,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中物品价值总和的最大值 限制条件: 1 <= n <= 100; 1 < ...

  7. win10打文件预览功能

  8. Ubuntu16.04无法使用WiFi

    本人联想431,安装ubuntu16.04  lts,打开之后没有wife,参考这个解决 http://blog.csdn.net/bubblem/article/details/53575017 U ...

  9. vs2015 产品密钥

    一.破解秘钥 企业版    HM6NR-QXX7C-DFW2Y-8B82K-WTYJV 专业版    HMGNV-WCYXV-X7G9W-YCX63-B98R2 二.破解步骤 1.安装vs2015 2 ...

  10. 锤子科技 Smartisan M1L 咖啡金 真皮背面 高配版 5.7

    http://www.smartisan.com/m1/#/os    快人一步的OS http://www.smartisan.com/shop/#/buyphone?c=coffee&v= ...