Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle alter table使用其他表中的值添加分区_Oracle_Sql Delete_Database Partitioning - Fatal编程技术网

oracle alter table使用其他表中的值添加分区

oracle alter table使用其他表中的值添加分区,oracle,sql-delete,database-partitioning,Oracle,Sql Delete,Database Partitioning,我有两张桌子 tab1 (id as number unique index, ...) tab2 (id as number, ...) 我想在tab1上对tab2中的所有id进行快速批量删除。 但我尝试的每一种方法都不是很好,普通删除或批量删除都会变慢。 在tab1上删除索引是否,或者进行CTAS操作是选项 所以我想也许我可以给我们分区,但我没有这方面的经验。 是否可以通过在tab1.id上为tab2.id中存在和不存在的值添加分区 当可以创建tab1时,首先创建一个分区 谢谢这是一次性删

我有两张桌子

tab1 (id as number unique index, ...)
tab2 (id as number, ...)
我想在tab1上对tab2中的所有id进行快速批量删除。 但我尝试的每一种方法都不是很好,普通删除或批量删除都会变慢。 在tab1上删除索引是否,或者进行CTAS操作是选项

所以我想也许我可以给我们分区,但我没有这方面的经验。 是否可以通过在tab1.id上为tab2.id中存在和不存在的值添加分区

当可以创建tab1时,首先创建一个分区


谢谢

这是一次性删除,还是需要以一定频率执行的操作?新行插入tab2的频率是多少?从tab2插入到tab1删除之间是否有可接受的时间间隔?(我不相信分区可以像你建议的那样使用。)它的持续时间通常取决于我能达到的性能,最小值是每天每小时一次。我还尝试了其他几种方法,在tab1中创建一个CTA,不包含tab2中的行,然后合并两个表并重新填充索引,或者删除tab1中的所有索引从tab1中删除tab2中存在的所有行,然后使用append提示从tab2插入tab1并重建索引,但这一切都不是很快。如果分区不是一个选项,那么对于快速插入还有其他想法吗?那么在tab2上的insert触发器会在每次插入时从tab1中删除相应的行吗?(和/或在tab1上插入触发器,检查id是否已存在于tab2中)有趣的想法是,tab2上的触发器没有选项,但在tab1上可以工作,您对此有性能经验吗?每天我都用一堆行加载或重新创建tab2,所以有200k行,我想更新并插入到tab1中,但是来自tab2的新加载来自6个表的over db link,加载我创建的tab2并插入一个附加提示,您认为这会对tab1上的触发器起作用吗?因为如果我想删除tab1上存在于tab2中的每一行,并且在tab1上启用了索引,那么它会非常慢,超过2分钟。是否有一个触发器可以更快地完成此操作?如果触发事件是插入到tab2中,则tab1上的触发器没有意义。因为这是一个批量加载,所以触发器看起来并不是一个好的解决方案。老实说,你说这是一个日常过程,删除需要2分钟——我看不出有什么问题。