【发布时间】:2019-12-22 15:22:25
【问题描述】:
我已经编写了一个查询,并且能够成功运行它。当我尝试导出它时,它的导出速度非常慢,即每 10-15 分钟 50 行,我设法在 10 小时内导出了大约 50K 数据。如果此查询有任何问题,请帮助我。我正在使用 sql 开发人员
谢谢
我想要的结果是按列显示的:
|GLUSR_USR_CUSTTYPE_NAME|GLUSR_USR_ID|S_COUNT|MAX_DATE as Last Meeting|Min_DATE as first Meeting|Total Meeting in Last 90 Days|Total Meeting in last 180 days| active in last 30 Days| active in last 60 Days| active in last 90 Days|
sql:
Select GLUSR_USR_ID,
GLUSR_USR_CUSTTYPE_NAME,
( select Count(1) from STS_DSR_SALES@mainr,STS_Company@mainr where STS_DSR_SALES.FK_STS_COMPANY_ID=CompanyID and GLUSR_USR_ID=STS_FK_GLUSR_ID)S_COUNT,
(Select MAX(STS_DSR_SALES_DATE) from STS_DSR_SALES@mainr,STS_Company@mainr where STS_DSR_SALES.FK_STS_COMPANY_ID=COMPANYID)MAX_DATE,
(Select min(STS_DSR_SALES_DATE) from STS_DSR_SALES@mainr,STS_Company@mainr where STS_DSR_SALES.FK_STS_COMPANY_ID=COMPANYID)Min_DATE,
(Select count (1) STS_DSR_SALES_DATE from STS_DSR_SALES@mainr,STS_COMPANY@mainr where STS_DSR_SALES.FK_STS_COMPANY_ID= COMPANYID and GLUSR_USR_ID=STS_FK_GLUSR_ID and trunc(STS_DSR_SALES_DATE)>SYSDATE-90)last_90,
(Select count (1) STS_DSR_SALES_DATE from STS_DSR_SALES@mainr,STS_COMPANY@mainr where STS_DSR_SALES.FK_STS_COMPANY_ID= COMPANYID and GLUSR_USR_ID=STS_FK_GLUSR_ID and trunc(STS_DSR_SALES_DATE)>SYSDATE-180)last_180,
(Select Count (1) STS_DSR_SALES_DATE from STS_DSR_SALES@mainr,GLUSR_CLCKSTRM_4HOTLEAD_ARCH@mainr where GLUSR_USR_ID=FK_GLUSR_USR_ID and STS_DSR_SALES_DATE=Report_DATE and TRUNC(REPORT_DATE)>SYSDATE-30)ACTIVE_30,
(Select Count (1) STS_DSR_SALES_DATE from STS_DSR_SALES@mainr,GLUSR_CLCKSTRM_4HOTLEAD_ARCH@mainr where GLUSR_USR_ID=FK_GLUSR_USR_ID and STS_DSR_SALES_DATE=Report_DATE and TRUNC(REPORT_DATE)>SYSDATE-60)ACTIVE_60,
(Select Count (1) STS_DSR_SALES_DATE from STS_DSR_SALES@mainr,GLUSR_CLCKSTRM_4HOTLEAD_ARCH@mainr where GLUSR_USR_ID=FK_GLUSR_USR_ID and STS_DSR_SALES_DATE=Report_DATE and TRUNC(REPORT_DATE)>SYSDATE-90)ACTIVE_90
From
(
select GLUSR_USR_ID, fk_sts_company_id,GLUSR_USR_CUSTTYPE_NAME
from STS_DSR_SALES@mainr,GLUSR_USR@mainr,STS_COMPANY@MAINR
where STS_FK_GLUSR_ID=GLUSR_USR_ID
and fk_sts_company_id=CompanyID
and trunc(sts_dsr_sales_date) between '01-oCT-19' and '31-oCT-19'
)
【问题讨论】:
-
那些预期结果是不可读的,并且您标记了 2 个完全不同的 RDBMS。仅标记您实际使用的内容。
-
不幸的是,这里几乎没有任何特定信息可供任何人提供任何信息,除了猜测。数据库调优只关注细节。请阅读this answer on asking questions about Oracle query optimization,然后编辑您的问题以提供更多信息。
-
您使用的是古老的连接语法(旧的逗号分隔连接而不是显式内部连接)。而且,我们不知道哪些列属于哪些表。请用表格限定每一列。 (例如是
sts_dsr_sales.companyid还是glusr_usr.companyid还是sts_company.companyid?)然后,请解释你的表。它们包含什么,它们的键是什么?
标签: sql oracle performance query-optimization