提取数据查看ORACLE性能

Extract data from view ORACLE performance

您好,我创建了一个视图来进行子查询(来自两个表的 select) 这是 sql 订单:

CREATE OR REPLACE VIEW EMPLOYEER_VIEW
AS
 SELECT A.ID,A.FIRST_NAME||' '||A.LAST_NAME AS NAME,B.COMPANY_NAME
 FROM EMPLOY A, COMPANY B 
 WHERE A.COMPANY_ID=B.COMPANY_ID
 AND  A.DEPARTEMENT !='DEP_004'
 ORDER BY A.ID;

如果我 select 来自 EMPLOYEER_VIEW 的数据,则平均执行时间为 135,953 秒

Table EMPLOY contiens 124600329 行 Table 公司共有 609 行。

我的问题是: 我怎样才能使执行速度更快?

我创建了两个索引:

emply_index(编号,COMPANY_ID,部门) 和 company_index(COMPANY_ID)

你能帮我加快 selections 运行 的速度吗? (创建另一个索引或更改连接)

PS: 我无法在此数据库中创建物化视图。

预先感谢您的帮助。

你有很多事情要做。 如果您必须使用视图,并且无法创建计划作业以在 table 中插入数据,我将删除我的答案。 VIEWs 不具备支持亿级数据的范围。就是几百万。

  • INDEXes 插入数据时必须清理。如果你插入带有索引的数据,这个过程会慢 100 倍。 (您可以删除并创建或更新它们)。

  • 在table公司创建分区。 如果您有很多 ID,请使用 RANGE。 如果您有大约 100 个 ID,请列出分区。

不需要Index,因为JOIN的子句没有优化,INDEXes被指定为严格的WHERE子句。

我们有一个包含 433.000.000 条数据的项目,唯一的工作方式就是使用分区。