我有一个带有5维表和事实表的datamart。 我正在尝试清理几行(4000行)的维度表。但是,事实表有数百万行(25GB)(索引和分区)。
当我尝试删除表维度中的行时,该过程变得非常慢。尽管与事实表中的行没有关系(级联删除),但它同样缓慢。
有没有办法优化这个?提前谢谢。
答案 0 :(得分:0)
据推测,维度表和事实表之间存在级联删除。
在事实表中的键列上添加索引可能就足够了。然后,Oracle可以立即判断任何给定值是否/在哪里。
如果不起作用,请完全删除外键约束。删除未使用的值并重新添加约束。
答案 1 :(得分:0)
您也可以尝试这些策略:
创建事实表的另一个副本,但是没有要清理的表的暗淡外键列。
将fact_table_new创建为 选择dim1_k,dim2_k,dim3_k,dim4_k,dim5_k(不是此列),fact_1,fact_2,... 来自fact_table;
或
更新fact_table 设置dim5_fk_col = null 其中dim5_fk_col(从dim5_table中选择k_col);