龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库:全局索引的ONLINE重建要影响执行速度(1)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
Oracle数据库重建一个表的 索引 的时候,基本都是全局索引而且都是 ONLINE 方式重建,每个分区的重建时间基本相同,大约在23分钟左右。其实导致问题的原因很简单:由于采用ONLINE方式

Oracle数据库重建一个表的索引的时候,基本都是全局索引而且都是ONLINE方式重建,每个分区的重建时间基本相同,大约在23分钟左右。其实导致问题的原因很简单:由于采用ONLINE方式,而且全局索引的每一个分区的数据可能来自这个表的任何一个分区,所以ORACLE对于全局索引的任何一个分区的重建都要走全表扫描。以下是这一过程的代码演示部分:

1.查看当前用户,并以当前用户创建表T

  1. SQL> SHOW USER  
  2.  
  3. USER is "TEST"  
  4.  
  5. SQL> CREATE TABLE T(ID INT,NAME VARCHAR2(30))  
  6.  
  7. 2  PARTITION BY RANGE(ID)  
  8.  
  9. 3  (  
  10.  
  11. 4  PARTITION P1 VALUES LESS THAN(10000),  
  12.  
  13. 5  PARTITION P2 VALUES LESS THAN(20000),  
  14.  
  15. 6  PARTITION P3 VALUES LESS THAN(30000),  
  16.  
  17. 7  PARTITION P4 VALUES LESS THAN(40000),  
  18.  
  19. 8  PARTITION P5 VALUES LESS THAN(50000),  
  20.  
  21. 9  PARTITION PMAX VALUES LESS THAN(MAXVALUE)  
  22.  
  23. 10  )  
  24.  
  25. 11  /  
  26.  
  27. Table created. 

2.为表T创建全局索引

  1. SQL> CREATE INDEX T_ID_IDX ON T(ID) GLOBAL  
  2.  
  3. 2  PARTITION BY HASH(ID)  
  4.  
  5. 3  PARTITIONS 32  
  6.  
  7. 4  /  
  8.  
  9. Index created. 

3.查询索引列名称和分区列名称,并以指定的格式显示

  1. SQL> COL INDEX_NAME  FORMAT A20  
  2.  
  3. SQL> COL PARTITION_NAME FORMAT A20  
  4.  
  5. SQL> SELECT INDEX_NAME,PARTITION_NAME FROM USER_IND_PARTITIONS WHERE INDEX_NAME='T_ID_IDX';  
  6.  
  7. INDEX_NAME           PARTITION_NAME  
  8.  
  9. -------------------- --------------------  
  10.  
  11. T_ID_IDX             SYS_P225  
  12.  
  13. T_ID_IDX             SYS_P226  
  14.  
  15. T_ID_IDX             SYS_P227  
  16.  
  17. T_ID_IDX             SYS_P228  
  18.  
  19. T_ID_IDX             SYS_P229  
  20.  
  21. T_ID_IDX             SYS_P230  
  22.  
  23. T_ID_IDX             SYS_P231  
  24.  
  25. T_ID_IDX             SYS_P232  
  26.  
  27. T_ID_IDX             SYS_P233  
  28.  
  29. T_ID_IDX             SYS_P234  
  30.  
  31. T_ID_IDX             SYS_P235  
  32.  
  33. T_ID_IDX             SYS_P236  
  34.  
  35. T_ID_IDX             SYS_P237  
  36.  
  37. T_ID_IDX             SYS_P238  
  38.  
  39. T_ID_IDX             SYS_P239  
  40.  
  41. T_ID_IDX             SYS_P240  
  42.  
  43. T_ID_IDX             SYS_P241  
  44.  
  45. T_ID_IDX             SYS_P242  
  46.  
  47. T_ID_IDX             SYS_P243  
  48.  
  49. T_ID_IDX             SYS_P244  
  50.  
  51. T_ID_IDX             SYS_P245  
  52.  
  53. T_ID_IDX             SYS_P246  
  54.  
  55. T_ID_IDX             SYS_P247  
  56.  
  57. T_ID_IDX             SYS_P248  
  58.  
  59. T_ID_IDX             SYS_P249  
  60.  
  61. T_ID_IDX             SYS_P250  
  62.  
  63. T_ID_IDX             SYS_P251  
  64.  
  65. T_ID_IDX             SYS_P252  
  66.  
  67. T_ID_IDX             SYS_P253  
  68.  
  69. T_ID_IDX             SYS_P254  
  70.  
  71. T_ID_IDX             SYS_P255  
  72.  
  73. SQL> INSERT INTO T SELECT OBJECT_ID,OBJECT_NAME FROM ALL_OBJECTS;  
  74.  
  75. 50617 rows created.  
  76.  
  77. SQL> COMMIT;  
  78.  
  79. Commit complete. 

精彩图集

赞助商链接