提取数据查看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 条数据的项目,唯一的工作方式就是使用分区。
您好,我创建了一个视图来进行子查询(来自两个表的 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 条数据的项目,唯一的工作方式就是使用分区。