设为首页 加入收藏

TOP

Localprefixedindex和Localnonprefixedindex对select语句的性能影响分析(三)
2015-07-24 11:15:07 来源: 作者: 【 】 浏览:6
Tags:Localprefixedindex Localnonprefixedindex select 语句 性能 影响 分析
here条件中不带分区列,但是使用不含分区列的LOCAL-NON_PREFIXED索引
SQL> select /*+ index(t li_idx_03)*/ * from tivoli.li_db_session_t t where t.allsess=28 and t.dbname='COSTDB' and t.activess=4;

--上面语句,where条件中不含表的分区列

2346 rows selected.



Execution Plan

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

Plan hash value: 1367932018

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

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |

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

| 0 | SELECT STATEMENT | | 136 | 2720 | 134 (0)| 00:00:02 | | |

| 1 | PARTITION RANGE ALL | | 136 | 2720 | 134 (0)| 00:00:02 | 1 | 20 |

| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| LI_DB_SESSION_T | 136 | 2720 | 134 (0)| 00:00:02 | 1 | 20 |

|* 3 | INDEX RANGE SCAN | LI_IDX_03 | 136 | | 41 (0)| 00:00:01 | 1 | 20 |

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

Predicate Information (identified by operation id):

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

3 - access("T"."DBNAME"='COSTDB' AND "T"."ALLSESS"=28 AND "T"."ACTIVESS"=4)

Statistics

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

1 recursive calls

0 db block gets

1869 consistent gets

1046 physical reads

0 redo size

59842 bytes sent via SQL*Net to client

2239 bytes received via SQL*Net from client

158 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

2346 rows processed

5、性能对比小结

5.1 五种索引性能对比

(1)SQL语句:

select * from tivoli.li_db_session_t t where t.allsess=28 andt.dbname='COSTDB' and t.timstap >to_date('2011-01-01','yyyy-mm-dd') andt.timstap < to_date('2011-01-20','yyyy-mm-dd') and t.activess=4;

序号

使用索引名称

索引特点

索引类型

是否有回表

time

consistent gets

1

LI_IDX_01

只有分区字段列的local索引

LOCAL-PREFIXED

0:41:38

262334

2

LI_IDX_02

分区字段列为索引首位,索引中的列包含where条件中的所有列的local索引

LOCAL-PREFIXED

0:00:34

3141

3

LI_IDX_03

不包含分区字段列的local索引,索引字段包含where条件中除分区列以外的所有列

LOCAL-NON_PREFIXED

0:00:02

658

4

LI_IDX_04

包含where条件中的所有列,包括分区字段列,但是分区字段列非首位的local索引

LOCAL-NON_PREFIXED

0:00:01

43

5

LI_IDX_05

包含where条件中的所有列,包括分区字段列,但是分区字段列非首位的全局索引

GLOBAL

0:00:01

41

(2)SQL语句二:

select /*+ index(t li_idx_03)*/ * fromtivoli.li_db_session_t t where t.allsess=28 and t.dbname='COSTDB' andt.activess=4;

序号

使用索引名称

索引特点

索引类型

是否有回表

time

consistent gets

1

LI_IDX_03

不包含分区字段列的local索引,索引字段包含where条件中除分区列以外的所有列

LOCAL-NON_PREFIXED

0:00:02

1869


5.2 小结

(1)从上面性能对比数据来看,GLOBAL索引的性能最好,但是由于GLOBAL索引在删除分区后索引会失效,所以分区表上不建议使用GLOBAL索引。

(2)关于LOCAL-PREFIXED与LOCAL-NON_PREFIXED索引:如果查询条件包含索引的所有列,LOCAL-NON_PREFIXED索引索引性能优化于LOCAL-PREFIXED索引,只包含分区字段列的LOCAL-PREFIXED索引性能最差

(3)不包含分区字段列的LOCAL-NON_PREFIXED索引(如LI_IDX_03),一定是要在where条件中带有分区字段列做为条件的情况下,效果才会理想,如果where条件中不包含分区字段列,就不应该使用LOCAL索引,全局索引的效果会远远优于不包含分区字段列的LOCAL-NON_PREFIXED索引

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇CentosMySQL5.6安装方法 下一篇Redis常用命令总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)
·C++为什么不加上内存 (2025-12-25 08:19:44)
·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)