分区索引:
分为global, local index
local partitioned index:
每个local index对应一个分区。增加和删除分区自动的增加和删除了local index。
Local index可以是全表unique的,条件是partition key必须是index columns的一部分?
CREATE INDEX employees_local_idx ON employees (employee_id) LOCAL;
分区上的位图索引只能建立为local partitioned index,不能是global
Global partitioned index:
索引也分区,但是分几个区,按照什么样的partition key分区跟表没有关系。不能增加分区,可以使用ALTER INDEX SPLIT PARTITION;删除:ALTER INDEX DROP PARTITION;这些操作会使的索引失效,所以建议:
ALTER TABLE DROP PARTITION P1 UPDATE GLOBAL INDEXES
这样保证索引仍然有效,online,不需重建。
CREATE INDEX employees_global_part_idx ON employees(employee_id)
GLOBAL PARTITION BY RANGE(employee_id)
(PARTITION p1 VALUES LESS THAN(5000),
PARTITION p2 VALUES LESS THAN(MAXVALUE));
Global Nonpartitioned Indexes:
怎样提高性能:
Partition Pruning
根据SQL自动选择应该访问哪些必要的分区,partition pruning可以跳过不必要的索引或者表分区或子分区。但是如果SQL对partition columns作了function( to_date除外),则不会删除分区。