Oracle分区表设置详解
Oracle分区表详解
Oracle建议单表超过2G就需要进行分表,一万数据大概3MB,单表最多分区为1024*1024-1个分区,我感觉够我们使用了哈
废话不多说,上示例,Oracle分表具体sql如下,大家可根据自己情况进行更改,具体理论后期有时间进行补充哈,希望可以帮助到各位大佬!
示例:
-- 创建临时分区表 CREATE TABLE "MARKET"."STUDENT_2" ( "ID" NUMBER, "NAME" VARCHAR2 (255), "CREATE_TIME" TIMESTAMP (6), PRIMARY KEY ("ID") ) -- 根据那个字段进行分区 按月进行分区 按月自动分区 -- 按年year 、月month -- 按天 NUMTODSINTERVAL(1, 'day') 、按周(7, 'day') PARTITION BY RANGE ("CREATE_TIME") INTERVAL (numtoyminterval(1, 'month')) ( -- than 分区的区间 只能有一个 分区存储的为上一个月数据 PARTITION STUDENT_A2 VALUES LESS THAN (to_date('2022-01-01', 'yyyy-mm-dd')) ) --查询当前表有多少分区 select * from user_tab_partitions where table_name='STUDENT_2'; --查询这个表的某个分区(SYS_P21)里的数据 select * from STUDENT_2 partition(STUDENT_A2); -- 添加分区 alter table STUDENT_2 add PARTITION STUDENT_A3 VALUES LESS THAN (to_date('2022-02-01', 'yyyy-mm-dd')) -- 删除分区 ALTER TABLE STUDENT_2 DROP PARTITION STUDENT_A2; -- 如果是全局索引,因为全局索引的分区结构和表可以不一致,若不一致的情况下,会导致整个全局索引失效,在删除分区的时候,语句修改为: ALTER TABLE STUDENT_2 DROP PARTITION STUDENT_A2 UPDATE GLOBAL INDEXES; -- 查看分区索引 select * from user_ind_partitions; -- 5. 为分区表设置索引全局索引 -- Create/Recreate indexes create index student_2_create_time_1 on STUDENT_2 (CREATE_TIME); -- 6. 设置分区索引 CREATE INDEX INX_TAB_PARTITION_COL1 ON STUDENT_2(NAME) LOCAL; -- 删除索引 DROP INDEX INX_TAB_PARTITION_COL1; --6.1、查询索引、表上在那些列上创建了分区: SELECT * FROM USER_PART_KEY_COLUMNS; -- 7. 作用是:允许分区表的分区键是可更新。 -- 当某一行更新时,如果更新的是分区列,并且更新后的列植不属于原来的这个分区, -- 如果开启了这个选项,就会把这行从这个分区中 delete 掉,并加到更新后所属的分区,此时就会发生 rowid 的改变。 -- 相当于一个隐式的 delete + insert ,但是不会触发 insert/delete 触发器。 alter table STUDENT_2 enable row movement; -- 关闭自动分区 alter table t set interval();
无论风雨,和自己一决胜负吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通