提高视图交叉连接唯一值的性能(可伸缩性)

时间:2019-08-22 10:08:52

标签: oracle

我正在使用Oracle APEX作为数据库。我的数据存储在表(即table1)中,并且我使用视图来运行某种评分系统(table1 => view1),视图需要不到一秒钟的时间才能显示在屏幕上。然后,鉴于所有视图的attrib1必须彼此不同,因此我需要执行交叉联接以获取数据集中的所有可能排列。我有18个表和18个视图,记录范围在2到31之间(这意味着很多排列)

在下面找到一个包含4个视图的局部视图的代码段,只需很少的时间即可处理。

CREATE OR REPLACE FORCE VIEW "parcial_view" ("col_1", "col_2", "col_3", "col_4", "total") AS 
  SELECT 
 view1.attrib1 as col_1
,view2.attrib1 as col_2
,view3.attrib1 as col_3
,view4.attrib1 as col_4
,view1.attrib2+view2.attrib2+view2.attrib2+view4.attrib2 as total
from view1
cross join view2
cross join view3
cross join view4
where (view1.attrib1 not in (view2.attrib1, view3.attrib1, view4.attrib1)
and view2.attrib1 not in (view3.attrib1, view4.attrib1)
and view3.attrib1 not in (view4.attrib1))
or 'empty' in (view1.attrib1, view2.attrib1, view3.attrib1, view4.attrib1)
order by total desc

但是,当我使用所有18个视图时,我得到ORA-00040:超出活动时间限制-调用已中止。因此,我正在寻找改善性能的方法。

0 个答案:

没有答案