我有一个 Composite-List-List 分区表,它有 19 列和大约 4 亿行。每周在此表中插入一次新数据,在插入之前,我需要将特定分区的 2 列的值设置为 null。
明显的方法如下所示,其中 COLUMN_1 是分区标准:
UPDATE BLABLA_TABLE
SET COLUMN_18 = NULL, SET COLUMN_19 = NULL
WHERE COLUMN_1 IN (VALUE1, VALUE2…)
当然,这会非常缓慢。
我的第二个想法是对我需要将这两列设置为 null 的每个分区使用 CTAS,然后使用 EXCHANGE PARTITION 更新我的大表中的数据。不幸的是,这行不通,因为它是复合分区。
我可以对子分区使用相同的方法,但是我必须使用 CATS 大约 8000 次,然后每周删除这些表。我想这不会通过即将到来的代码审查。
可能有人有另一个想法如何高效地解决这个问题?
PS:我使用 ORACLE 11g 作为数据库。PPS:对不起我的英语不好......