FREE教程
目录
  • 主页
  • Oracle教程
  • redis教程
  • hadoop
  • ODI教程
  • BIEE教程
Oracle基础教程
Oracle基础教程 Oracle介绍 Oracle安装 Oracle客户端工具 Oracle服务 Oracle用户 SQL语句介绍 案例所需表结构 Oracle建表(create table) Oracle查询(select) Oracle插入(insert into) Oracle更新(update) Oracle删除(delete) Oracle运算符 Oracle字符串连接符|| Oracle DISTINCT Oracle 条件查询 =、IN、LIKE、BETWEEN...AND Oracle集合运算 Oracle连接查询 Oracle的伪列 Oracle 函数 Oracle字符型函数 Oracle日期型函数 Oracle数值型函数 Oracle转换函数 Oracle聚合函数 Oracle子查询 Oracle synonym 同义词 Oracle序列 Oracle视图 Oracle索引 Oracle分区详解和创建 Oracle如何在分区表上创建索引 oracle merge into命令 oracle物化视图 oracle分析函数_开窗函数详解 Oracle行转列(PIVOT) Oracle列转行_unpivot Oracle创建物化视图
分类导航
Oracle基础教程 PL/SQL教程 Oracle管理 Oracle备份和恢复 Oracle RAC Oracle优化 Oracle技术 redis基础教程 hadoop教程
    首页->Oracle教程->Oracle基础教程->Oracle如何在分区表上创建索引
Oracle分区详解和创建
oracle merge into命令

Oracle如何在分区表上创建索引

通过上一章的Oracle分区的详解,我们知道了Oracle分区的优势以及如何进行创建。在实际生产环境中,为了进一步的优化大型表(大数据量集)的查询效率,这个时候得考虑在分区表上某个字段创建索引。分区表的索引和普通表的索引本质上是一样的,都是利用空间换取时间的方式,通过存储索引块来增加查询效率。但是有不同地方是,Oracle分区表索引可以分为局部(分区)索引和全局索引之分。

分区索引

所为的分区索引指的是在子分区当中按照某个字段建立索引,例如,上一章创建的学生成绩表中(score),可以对学生学号创建local索引,即分区索引。代码如下:

create index idx_score_stuid on student.score(stuid)
local
(
partition idx_score_stuid_1 tablespace TS_2018,
partition idx_score_stuid_2 tablespace TS_2019,
partition idx_score_stuid_3 tablespace TS_2020
)

请注意local关键字。在这个create index命令中没有指定范围,而是由local 关键字告诉Oracle为score表的每一个分区创建一个单独的索引,因此,每一个表分区对应着一个索引分区。每一个索引分区存储在不同的表空间上,可以大大提高I/O和查询效率。

通过查询数据字典dba_ind_partitions可以查看刚刚创建的分区索引,如下图:

Oracle分区索引

全局索引

Oracle分区表也可以创建全局索引,全局索引和普通表的索引一样,是对整表的数据进行创建索引。例如,可以对学生成绩表的(score)的课程ID(COURSEID)创建全局索引,具体代码如下:

create index STUDENT.IDX_SCORE_COURSEID 
on STUDENT.SCORE (courseid)
global;

这里,虽然分区索引比全局索引更容易管理,而且在分区当中查询效率更高,但是全局索引在全表进行唯一性检索时的速度可能会比局部索引更快,因为全局检索唯一性时,需要跨区。

注意:不能为子分区创建全局索引。

Oracle分区详解和创建
oracle merge into命令
关于我们 | 免责声明 | Copyright ? 2018 FREE教程 | 备案号:闽ICP备18020855号-1
公安备案

闽公网安备 35020602001245号