Oracle创建分区表和全局索引

分区表概念
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
按照START_TIME字段以一年为跨度建立分区表。

PARTITION BY RANGE(START_TIME)
(
	PARTITION p1 VALUES LESS THAN('2019-1-1'),
	PARTITION p1 VALUES LESS THAN('2020-1-1'),
	PARTITION p1 VALUES LESS THAN('2021-1-1'),
	PARTITION p1 VALUES LESS THAN('2022-1-1'),
	PARTITION p1 VALUES LESS THAN(maxvalue),
)

在program_id上建立全局索引

create index GINX_TRAIN_PROGRAMID on TRAIN(PROGRAM_ID) GLOBAL

当查询的条件是需要跨分区查询内容的时候,LOCAL INDEX的效率比GLOBAL INDEX的效率要低。
如果查询的条件是在单个分区里面查询的时候,那么LOCAL INDEX的效率比GLOBAL INDEX的效率要高。

建立分区表后,如果要更改分区字段,会报错

ORA-14402: updating partition key column would cause a partition change

这时执行

alter table XXXXX enable row movement;  

之后,再执行更改语句即可成功。

参考

oracle分区表之何时使用MAXVALUE分区
Oracle 分区表中本地索引和全局索引的适用场景
oracle表分区详解(按天、按月、按年等)
Oracle数据库表分区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值