关于分区索引与全局索引性能比较的示例
说明:之前使用range分区做出来的效果不明显,这次使用hash分区。
1、准备工作:
----创建两张一样的hash分区表,jacks_part和echos_part------------------ 1 SQL> create table jacks_part (owner varchar2(30),object_id number,object_name varchar2(128)) 2 2 partition by hash(object_id) 3 3 partitions 30; 4 5 Table created. 6 7 SQL> create table echos_part (owner varchar2(30),object_id number,object_name varchar2(128)) 8 2 partition by hash(object_id) 9 3 partitions 30; 10 11 Table created. 12 ----分别向两张表插入一些记录-----------------13 SQL> insert into jacks_part select owner,object_id,object_name from dba_objects; 14 15 72196 rows created. 16 17 SQL> insert into echos_part select owner,object_id,object_name from jacks_part; 18 19 72196 rows created. 20 21 SQL> commit; 22 23 Commit complete. 24 ----分别创建global索引和local索引---------------25 SQL> create index globals_ind on jacks_part(object_id) 26 2 global partition by hash(object_id); 27 28 Index created. 29 30 SQL> create index locals_ind on echos_part(object_id) local; 31 32 Index created. 33 ----查询索引是否正确--------------------------34 SQL> select index_name,table_name,locality from user_part_indexes; 35 36 INDEX_NAME TABLE_NAME LOCALI 37 ------------------ ------------------------------ ------ 38 LOCALS_IND ECHOS_PART LOCAL 39 GLOBALS_IND JACKS_PART GLOBAL
2、分区索引性能优于全局索引的例子:
1 SQL> set linesize 200; 2 SQL> set autotrace traceonly; 3 SQL> select /*+ index(echos_part,locals_ind) */ * from echos_part where object_id>100; 4 5 72097 rows selected. 6 7 8 Execution Plan 9 ---------------------------------------------------------- 10 Plan hash value: 3092815211 11 12 ----------------------------------------------------------------------------------------------------------------- 13 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | 14 ----------------------------------------------------------------------------------------------------------------- 15 | 0 | SELECT STATEMENT | | 4228 | 396K| 89 (0)| 00:00:02 | | | 16 | 1 | PARTITION HASH ALL | | 4228 | 396K| 89 (0)| 00:00:02 | 1 | 30 | 17 | 2 | TABLE ACCESS BY LOCAL INDEX ROWID| ECHOS_PART | 4228 | 396K| 89 (0)| 00:00:02 | 1 | 30 | 18 |* 3 | INDEX RANGE SCAN | LOCALS_IND | 4228 | | 25 (0)| 00:00:01 | 1 | 30 | 19 ----------------------------------------------------------------------------------------------------------------- 20 21 Predicate Information (identified by operation id): 22 --------------------------------------------------- 23 24 3 - access("OBJECT_ID">100) 25 26 Note 27 ----- 28 - dynamic sampling used for this statement (level=2) 29 30 31 Statistics 32 ---------------------------------------------------------- 33 0 recursive calls 34 0 db block gets 35 10562 consistent gets 36 0 physical reads 37 0 redo size 38 3128267 bytes sent via SQL*Net to client 39 53285 bytes received via SQL*Net from client 40 4808 SQL*Net roundtrips to/from client 41 0 sorts (memory) 42 0 sorts (disk) 43 72097 rows processed 44 45 SQL> select /*+ index(jacks_part,globals_ind) */ * from jacks_part where object_id>100; 46 47 72097 rows selected. 48 49 50 Execution Plan 51 ---------------------------------------------------------- 52 Plan hash value: 2501448352 53 54 ------------------------------------------------------------------------------------------------------------------- 55 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | 56 ------------------------------------------------------------------------------------------------------------------- 57 | 0 | SELECT STATEMENT | | 2500 | 234K| 4639 (1)| 00:00:56 | | | 58 | 1 | PARTITION HASH SINGLE | | 2500 | 234K| 4639 (1)| 00:00:56 | 1 | 1 | 59 | 2 | TABLE ACCESS BY GLOBAL INDEX ROWID| JACKS_PART | 2500 | 234K| 4639 (1)| 00:00:56 | ROWID | ROWID | 60 |* 3 | INDEX RANGE SCAN | GLOBALS_IND | 2500 | | 15 (0)| 00:00:01 | 1 | 1 | 61 ------------------------------------------------------------------------------------------------------------------- 62 63 Predicate Information (identified by operation id): 64 --------------------------------------------------- 65 66 3 - access("OBJECT_ID">100) 67 68 Note 69 ----- 70 - dynamic sampling used for this statement (level=2) 71 72 73 Statistics 74 ---------------------------------------------------------- 75 0 recursive calls 76 0 db block gets 77 74718 consistent gets 78 0 physical reads 79 0 redo size 80 3077218 bytes sent via SQL*Net to client 81 53285 bytes received via SQL*Net from client 82 4808 SQL*Net roundtrips to/from client 83 0 sorts (memory) 84 0 sorts (disk) 85 72097 rows processed
3、分区索引性能低于全局索引的例子1:
1 SQL> select /*+ index(echos_part,locals_ind) */ count(*) from echos_part where object_id>100; 2 3 4 Execution Plan 5 ---------------------------------------------------------- 6 Plan hash value: 2317569636 7 8 -------------------------------------------------------------------------------------------------- 9 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | 10 -------------------------------------------------------------------------------------------------- 11 | 0 | SELECT STATEMENT | | 1 | 13 | 25 (0)| 00:00:01 | | | 12 | 1 | SORT AGGREGATE | | 1 | 13 | | | | | 13 | 2 | PARTITION HASH ALL| | 4228 | 54964 | 25 (0)| 00:00:01 | 1 | 30 | 14 |* 3 | INDEX RANGE SCAN | LOCALS_IND | 4228 | 54964 | 25 (0)| 00:00:01 | 1 | 30 | 15 -------------------------------------------------------------------------------------------------- 16 17 Predicate Information (identified by operation id): 18 --------------------------------------------------- 19 20 3 - access("OBJECT_ID">100) 21 22 Note 23 ----- 24 - dynamic sampling used for this statement (level=2) 25 26 27 Statistics 28 ---------------------------------------------------------- 29 0 recursive calls 30 0 db block gets 31 205 consistent gets 32 0 physical reads 33 0 redo size 34 424 bytes sent via SQL*Net to client 35 419 bytes received via SQL*Net from client 36 2 SQL*Net roundtrips to/from client 37 0 sorts (memory) 38 0 sorts (disk) 39 1 rows processed 40 41 SQL> select /*+ index(jacks_part,globals_ind) */ count(*) from jacks_part where object_id>100; 42 43 44 Execution Plan 45 ---------------------------------------------------------- 46 Plan hash value: 2478129137 47 48 ------------------------------------------------------------------------------------------------------ 49 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | 50 ------------------------------------------------------------------------------------------------------ 51 | 0 | SELECT STATEMENT | | 1 | 13 | 15 (0)| 00:00:01 | | | 52 | 1 | SORT AGGREGATE | | 1 | 13 | | | | | 53 | 2 | PARTITION HASH SINGLE| | 2500 | 32500 | 15 (0)| 00:00:01 | 1 | 1 | 54 |* 3 | INDEX RANGE SCAN | GLOBALS_IND | 2500 | 32500 | 15 (0)| 00:00:01 | 1 | 1 | 55 ------------------------------------------------------------------------------------------------------ 56 57 Predicate Information (identified by operation id): 58 --------------------------------------------------- 59 60 3 - access("OBJECT_ID">100) 61 62 Note 63 ----- 64 - dynamic sampling used for this statement (level=2) 65 66 67 Statistics 68 ---------------------------------------------------------- 69 0 recursive calls 70 0 db block gets 71 201 consistent gets 72 0 physical reads 73 0 redo size 74 424 bytes sent via SQL*Net to client 75 419 bytes received via SQL*Net from client 76 2 SQL*Net roundtrips to/from client 77 0 sorts (memory) 78 0 sorts (disk) 79 1 rows processed
分区索引性能低于全局索引的例子2:
1 SQL> drop index globals_ind; 2 3 Index dropped. 4 5 SQL> create index global_indexs on jacks_part(object_id) global; 6 7 Index created. 8 9 SQL> select /*+ index(echos_part,locals_ind) */ count(*) from echos_part where object_id>100; 10 11 12 13 Execution Plan 14 ---------------------------------------------------------- 15 Plan hash value: 2317569636 16 17 -------------------------------------------------------------------------------------------------- 18 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | 19 -------------------------------------------------------------------------------------------------- 20 | 0 | SELECT STATEMENT | | 1 | 5 | 175 (0)| 00:00:03 | | | 21 | 1 | SORT AGGREGATE | | 1 | 5 | | | | | 22 | 2 | PARTITION HASH ALL| | 72101 | 352K| 175 (0)| 00:00:03 | 1 | 30 | 23 |* 3 | INDEX RANGE SCAN | LOCALS_IND | 72101 | 352K| 175 (0)| 00:00:03 | 1 | 30 | 24 -------------------------------------------------------------------------------------------------- 25 26 Predicate Information (identified by operation id): 27 --------------------------------------------------- 28 29 3 - access("OBJECT_ID">100) 30 31 32 Statistics 33 ---------------------------------------------------------- 34 1704 recursive calls 35 0 db block gets 36 437 consistent gets 37 206 physical reads 38 0 redo size 39 40 SQL> select /*+ index(jacks_part,global_indexs) */ count(*) from jacks_part where object_id>100; 41 42 43 Execution Plan 44 ---------------------------------------------------------- 45 Plan hash value: 1016566238 46 47 ----------------------------------------------------------------------------------- 48 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 49 ----------------------------------------------------------------------------------- 50 | 0 | SELECT STATEMENT | | 1 | 5 | 201 (0)| 00:00:03 | 51 | 1 | SORT AGGREGATE | | 1 | 5 | | | 52 |* 2 | INDEX RANGE SCAN| GLOBAL_INDEXS | 72101 | 352K| 201 (0)| 00:00:03 | 53 ----------------------------------------------------------------------------------- 54 55 Predicate Information (identified by operation id): 56 --------------------------------------------------- 57 58 2 - access("OBJECT_ID">100) 59 60 61 Statistics 62 ---------------------------------------------------------- 63 1 recursive calls 64 0 db block gets 65 201 consistent gets 66 200 physical reads 67 0 redo size
关于分区索引与全局索引性能比较的示例相关推荐
- 本地索引和全局索引的适用场景
[背景]分区表创建好了之后,如果需要最大化分区表的性能就需要结合索引的使用,分区表有两种索引:本地索引和全局索引.既然存在着两种的索引类型,相信存在即合理.既然存在就会有存在的原因,也就是在特定的场景 ...
- oracle不适合建立索引的场景,Oracle 分区表中本地索引和全局索引的适用场景
背景 分区表创建好了之后,如果需要最大化分区表的性能就需要结合索引的使用,分区表有两种索引:本地索引和全局索引.既然存在着两种的索引类型,相信存在即合理.既然存在就会有存在的原因,也就是在特定的场景中 ...
- Oracle 本地索引和全局索引
文章目录 背景 全局索引 本地索引 索引的选择 全局索引修改为本地索引 参考 背景 上一篇Oracle 分区表 讲述了 Oracle 分区表建立的几种方式.那么分区表创建好了之后,其索引该如何选择呢? ...
- mysql 分区 全局索引_全局分区索引与局部分区索引
分区索引 分区索引,有是全局分区索引与局部分区索引,加上一种全局非分区索引(也就是普通索引),加起来共三种.下面我们讨论了这三种索引的组织结构以及应用场景. 1.全局非分区索引可以依赖普通的表,也可以 ...
- mysql 分区索引失效_数据库分区表全局索引失效故障
现场实施反馈一个分区表的几个全局索引老是失效. 通过视图v$sql, v$sqlarea等视图查看,对这张分区表执行过的操作有drop partition和truncate partition操作,但 ...
- oracle全局索引 效率,关于插入,全局索引和局部索引的情况,那种效率高
分区表上的索引 表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限 ...
- [Phoenix] 十、全局索引设计实践
概述 全局索引是Phoenix的重要特性,合理的使用二级索引能降低查询延时,让集群资源得以充分利用. 本文将讲述如何高效的设计和使用索引. 全局索引说明 全局索引的根本是通过单独的HBase表来存储数 ...
- Phoenix:全局索引设计实践
概述 全局索引是Phoenix的重要特性,合理的使用二级索引能降低查询延时,让集群资源得以充分利用. 本文将讲述如何高效的设计和使用索引. 全局索引说明 全局索引的根本是通过单独的HBase表来存储数 ...
- 【Oracle】表级别分区操作对索引(本地分区索引,全局分区索引,非分区索引)的影响
--参考自<Oracle索引技术> 先贴上结论吧: 下面对以上几种操作分别测试: 创建测试表及索引 --创建测试分区表 CREATE TABLE employees_parttest (e ...
最新文章
- 《需求分析与系统设计》阅读笔记三
- python输入球的半径_基于用户输入半径的Myro移动机器人
- 【渝粤教育】国家开放大学2018年春季 0105-22T酒店营销实务 参考试题
- Spring配置JPA的xml路径的问题
- JAVA学习之网络编程UDP篇
- 计算机网络实验视频word,(完整word版)《计算机网络与通信》实验.docx
- Genius‘s Gambit【学习进度条1】
- 计算机链接与rtu通讯的区别,RTU
- 刚入职就写了个bug,把几万用户搞蓝屏了···
- 问卷小程序php,问卷调查小程序(tp后台)
- 数据库COUNT(*)、COUNT(字段)和COUNT(1)的异同
- 海尔简爱s11怎么进入bios_海尔笔记本如何进入BIOS设置_海尔笔记本进入bios方法...
- 艺无止境·一路前行——王玉玺先生作品欣赏
- php树递归算法,php实现无限级树型菜单(函数递归算法)
- python实现批量识别图片文字,生成对应的txt文件
- 【转】WebMatrix 从零建站如此简单!来自微软的免费网站服务器快速建站套件
- PNAS:人类小脑皮层的表面积相当于大脑的80%
- vCalendar文件格式解析
- 20岁不考证,25岁不加班,30岁不熬夜,40岁你还有工作吗?
- IT 人能在一线城市里生活一辈子吗?
热门文章
- 数据挖掘肿瘤预测_科研套路不嫌多,数据挖掘发3分
- python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?
- HDU 2243 考研路茫茫——单词情结 求长度小于等于L的通路总数的方法
- hdu 5045 Contest(状态压缩DP)
- 11月30在spring mvc中使用Validator框架和文件上传
- 全国计算机等级考试题库二级C操作题100套(第22套)
- android 图片识别白色区域进行裁剪_【研途技能贴】| 4款好用的图片处理软件推荐...
- python谁是卧底游戏流程图_虎牙小程序—谁是卧底 |明星互动游戏
- matlab画泡面图,MATLAB中,( )函数可以保存图像并指定为图像文件格式。
- php mail ld preload,读《利用环境变量LD_PRELOAD来绕过php disable_function执行系统命令》有感...