Oracle优化

Oracle的本地分区索引

时间:2013-9-7 14:13:56  作者:说歌社区  来源:www.solgle.com  查看:385  评论:0
内容摘要:类似文章很多,以下是本人的试验,主要说明一点:本地分区索引的分区可以和数据的分区不在一起,也可以在一起。drop table test_p2 cascade constraint;create table test_p2(Names varchar2(30),age int,ho...
类似文章很多,以下是本人的试验,主要说明一点:本地分区索引的分区可以和数据的分区不在一起,也可以在一起。
 
 
drop table test_p2 cascade constraint;
create table test_p2(Names varchar2(30),age int,home varchar2(100),mail varchar2(100))
partition by range(age)
(
  partition p_1 values less than(11) ,
  partition p_2 values less than (21),
  partition p_3 values less than(31),
  partition p_4 values less than (41),
  partition p_other values less than (maxvalue)
) tablespace tbs_j_fact;  
 
 
create index ind_test_p2 on test_p2(names,age) tablespace tbs_j_index local;
 
insert into test_p2 values('lzf',32,'fj','lzfhope@163.com');
insert into test_p2 values('ssi',41,'fj','lzfhope1@163.com');
insert into test_p2 values('lxy',11,'fj','lzfhope2@163.com');
insert into test_p2 values('lhh',8,'fj','lzfhope3@163.com');
insert into test_p2 values('阿达',26,'fj','lzfhope3@163.com');
 
select * from test_p2
 
 
BEGIN
   DBMS_STATS.gather_table_stats('JYFX','TEST_P2',cascade => TRUE,force => TRUE);   
END;
 
 
select partition_name,tablespace_name,num_rows from User_Tab_Partitions where table_name='TEST_P2'
 
PARTITION_NAME      TABLESPACE_NAME       NUM_ROWS
------------------------------ ------------------------------ ----------
P_1                          TBS_J_FACT                       1
P_2                          TBS_J_FACT                       1
P_3                          TBS_J_FACT                       1
P_4                          TBS_J_FACT                       1
P_OTHER                  TBS_J_FACT                       1
 
 
SELECT  partition_name,tablespace_name,distinct_keys FROM USER_IND_PARTITIONS WHERE INDEX_NAME='IND_TEST_P2'
 
PARTITION_NAME      TABLESPACE_NAME     DISTINCT_KEYS
------------------------------ ------------------------------ -------------
P_1                          TBS_J_INDEX                         1
P_2                          TBS_J_INDEX                         1
P_3                          TBS_J_INDEX                         1
P_4                          TBS_J_INDEX                         1
P_OTHER                  TBS_J_INDEX                         1
 
 
 
结论:可以通过简单地加个tablespace参数指定本地分区索引和数据的分区不同分区。
 
 
 
 
 
实验默认的不加分区的
 
create index ind_test_p2_names on test_p2(names)  local;
BEGIN
   DBMS_STATS.gather_table_stats('JYFX','TEST_P2',cascade => TRUE,force => TRUE);   
END;
SELECT  partition_name,tablespace_name,distinct_keys FROM USER_IND_PARTITIONS WHERE INDEX_NAME='IND_TEST_P2_NAMES'
 
SQL> SELECT  partition_name,tablespace_name,distinct_keys FROM USER_IND_PARTITIONS WHERE INDEX_NAME='IND_TEST_P2_NAMES'
  2  /
 
PARTITION_NAME      TABLESPACE_NAME     DISTINCT_KEYS
------------------------------ ------------------------------ -------------
P_1                          TBS_J_FACT                          1
P_2                          TBS_J_FACT                          1
P_3                          TBS_J_FACT                          1
P_4                          TBS_J_FACT                          1
P_OTHER                  TBS_J_FACT                          1
 
 
 
结论:如果不加参数tablespace那么默认就是和数据同个分区了。
 
 
 
 
 
测试:你完全可以自行指定分区,但依然可以是本地的。
 
 
 
create index ind_test_p2_mail on test_p2(age,mail)  local
(
     partition p_1 tablespace tbs_j_fact ,
     partition p_2  tablespace tbs_j_fact,
     partition p_3  tablespace tbs_j_fact,
     partition p_4  tablespace tbs_j_fact,
     partition p_other  tablespace tbs_j_index
)    
 
SQL> SELECT  partition_name,tablespace_name,distinct_keys FROM USER_IND_PARTITIONS WHERE INDEX_NAME='IND_TEST_P2_MAIL'
    2  /
   
  PARTITION_NAME      TABLESPACE_NAME     DISTINCT_KEYS
  ------------------------------ ------------------------------ -------------
  P_3                          TBS_J_FACT                          1
  P_4                          TBS_J_FACT                          1
  P_OTHER                  TBS_J_INDEX                         1
  P_1                          TBS_J_FACT                          1
  P_2                          TBS_J_FACT                          1
 
结论:你可以各个指定下。
 
 
 
 
 
总论:
 
1)加local分区索引很方便。
 
2)指定或者不指定分区默认表空间都可以。
 
3)单独指定每个分区的表空间也可以。
 
标签:Oracle 本地分区索引 

solgle.com 版权所有,欢迎分享!!!

相关评论
   Copyright © 2013-2020 solgle.com,All rights reserved.[solgle.com] 公安机关备案号:51010802000219
Email:solgle@solgle.com; weixin:cd1008610000 ICP:蜀ICP备14011070号-1