11.读书笔记收获不止Oracle之 表设计之分区使用
1分区表最实用的特性
1.1高效的分区消除
分区表的最大意义在于,可以有效的做到分区消除。
不过分区数过都,调用时会带来开销的。
1.2强大的分区操作
Delete无法释放空间,而truncate却有效地释放了空间。Truncate往往不能轻易使用,因为DELETE往往是针对某些条件的局部记录删除,而TRUNCATE显然不能带上条件,无法做到局部删除。
ORACLE可以实现TRUNCATE某个分区。
此外,ORACLE提供了一个非常棒的工具,就是分区交换,可以实现普通表和分区表的某个分区之间数据的相互交换,他们之间的交换非常快,基本在瞬间可以完成。两张表的字段必须是完全一样的。
此外还可以进行分区切割,将一个较大的分区切割成小的分区。
还有分区合并,分区增删操作。
2.关于分区索引
分区索引分成两类,一类是全局索引,另一类是局部索引,其中全局索引和普通的建索引方式无异。局部索引需要增加LOCAL关键字。局部索引是针对各个分区所建的索引。
3.分区表之陷阱
3.1索引失效
查看索引状态
sql>select index_name,status from user_indexeswhere index_name in (….);
sql>selectindex_name,partition_name,status from user_ind_partitions where index_name=’…’;
当TRUNCATE 分区后,全局索引失效。
使用参数update global indexes关键字可以避免全局索引失效。
分区表设计要考虑在语句中有效用到分区条件,有无分区条件差别巨大。