我们有一个从 Oracle 10g 数据库中提取数据的报告。我们正在使用 Coldfusion 9 来显示报告。该报告包含 3 个 CLOB 列,这些列正在缩短报告处理时间。通过删除三个 CLOB 列并在 2 - 3 秒内显示报告对此进行了测试。
有什么办法可以增加报告的处理时间?我理解为什么由于 CLOB 字段的大小而运行缓慢。只是想提高处理时间。
只是为了给出行的概念,典型的报告返回 200-300 行,所以行数非常少。
非常感谢
马修
更新 - 我们尝试使用 dbms_lob.substr() 并返回最大 4000 个字符,但这并没有提高处理时间。
这是查询:
SELECT
R.NC_REQUEST_ID REQUEST_ID,
R.TC_REQUEST_NAME REQUEST_NAME,
R.TC_REQUEST_NAME_2 REQUEST_NAME_2,
R.TC_INITIATOR INITIATOR,
R.NC_EXPENSE EXPENSE,
S.NC_FORM_STEP_ID FORM_STEP_ID,
S.NC_FORM_ID FORM_ID,
S.NC_STEP_ID STEP_ID,
S.TC_STEP_CODE STEP_CODE,
S.TC_STEP_NAME STEP_NAME,
TO_CHAR(R.DC_SUBMIT_DATE,'DD-Mon-YYYY') SUBMIT_DATE,
TO_CHAR(R.DC_ORIGINAL_DATE,'DD-Mon-YYYY') ORIGINAL_DATE,
TO_CHAR(R.DC_REVISION_DATE,'DD-Mon-YYYY') REVISION_DATE,
R.NC_BUS_GROUP_ID_FK BUS_GROUP_ID,
R.NC_BUS_UNIT_ID_FK BUS_UNIT_ID,
R.NC_BUS_SUB_ID_FK BUS_SUB_ID,
R.TC_ACT_NUMBER ACT_NUMBER,
R.TC_REQUEST_NAME REQUEST_NAME,
R.NC_YEAR YEAR_NUM,
R.NC_ACT_END_NUMBER ACT_END_NUMBER,
R.DC_START_DATE START_DATE,
R.DC_END_DATE END_DATE,
R.NC_ACT_TYPE_ID_FK ACT_TYPE_ID_FK,
TO_CHAR(R.DC_APPROVAL_DATE,'DD-Mon-YYYY') APPROVAL_DATE,
CC_ATTACHED_EXHIBIT ATTACHED_EXHIBIT,
CC_ROUTED ROUTED,
R.IC_RESTRICTED RESTRICTED,
ROI.NC_PI_OFF PI_OFF,
ROI.NC_PI_CA COST_AVOIDANCE_PI,
(SELECT COUNT(NC_REQUEST_ID_FK) FROM TBXS31_REMOVE_SECTION WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND NC_TEMPLATE_ID_FK IN(346,1455,1456,1458,1459,1460,1464.1641) GROUP BY NC_REQUEST_ID_FK) AS COUNT_OF_REMOVE_SECTIONS,
<cfoutput query="variables.qryEnergyListItems">
(SELECT NVL(ED.NC_EXISTINGUSAGE - ED.NC_PROPOSEDUSAGE,0) FROM TBYB28_SI_ENERGY_DATA ED,TBXP73_LIST_ITEMS LI WHERE LI.NC_VALUE_ID = ED.NC_ENERGYFORM(+) AND LI.NC_VALUE_ID = #variables.qryEnergyListItems.NC_VALUE_ID# AND ED.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND LI.IC_ACTIVE = 'T' AND LI.NC_VALUE_ID <> 808) AS "#variables.qryEnergyListItems.TC_MED_DESC#",
</cfoutput>
(SELECT TC_MED_DESC FROM TBXP73_LIST_ITEMS WHERE NC_VALUE_ID = SD.NC_BUSINESSUNIT) AS TC_BUS_UNIT,
(SELECT TC_MED_DESC FROM TBXP73_LIST_ITEMS WHERE NC_VALUE_ID = SD.NC_BUSINESSSUBUNIT) AS TC_BUS_SUB_UNIT,
(SELECT TC_MED_DESC FROM TBXP73_LIST_ITEMS WHERE NC_VALUE_ID = SD.NC_SITE) AS TC_BUS_SITE,
(SELECT NC_PROPOSEDGHG - NC_EXISTINGGHG FROM TBYB27_SUSTAINABILITY_DATA WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID) AS ANNUAL_IMPACT_C02E,
(SELECT DECODE(TBYB14_SI_BASELINE.NC_BASE_CO2E , 0, NULL, ((TBYB27_SUSTAINABILITY_DATA.NC_PROPOSEDGHG - TBYB27_SUSTAINABILITY_DATA.NC_EXISTINGGHG) / TBYB14_SI_BASELINE.NC_BASE_CO2E) * 100) FROM TBYB14_SI_BASELINE,TBYB27_SUSTAINABILITY_DATA WHERE TBYB27_SUSTAINABILITY_DATA.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBYB27_SUSTAINABILITY_DATA.NC_SITE = TBYB14_SI_BASELINE.NC_SITE_ID_FK(+) AND TBYB27_SUSTAINABILITY_DATA.NC_BASELINEYEAR = TBYB14_SI_BASELINE.NC_YEAR(+) ) AS PCT_IMPACT_CO2E,
(SELECT NC_PROPOSEDWASTE - NC_EXISTINGWASTE FROM TBYB27_SUSTAINABILITY_DATA WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID) AS ANNUAL_IMPACT_WASTE,
(SELECT DECODE(TBYB14_SI_BASELINE.NC_BASE_WASTE, 0, NULL, ((TBYB27_SUSTAINABILITY_DATA.NC_PROPOSEDWASTE - TBYB27_SUSTAINABILITY_DATA.NC_EXISTINGWASTE) / TBYB14_SI_BASELINE.NC_BASE_WASTE) * 100) FROM TBYB14_SI_BASELINE,TBYB27_SUSTAINABILITY_DATA WHERE TBYB27_SUSTAINABILITY_DATA.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBYB27_SUSTAINABILITY_DATA.NC_SITE = TBYB14_SI_BASELINE.NC_SITE_ID_FK(+) AND TBYB27_SUSTAINABILITY_DATA.NC_BASELINEYEAR = TBYB14_SI_BASELINE.NC_YEAR(+) ) AS PCT_IMPACT_WASTE,
(SELECT NC_PROPOSEDWATER - NC_EXISTINGWATER FROM TBYB27_SUSTAINABILITY_DATA WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID) AS ANNUAL_IMPACT_WATER,
(SELECT DECODE(TBYB14_SI_BASELINE.NC_BASE_WATER, 0, NULL, ((TBYB27_SUSTAINABILITY_DATA.NC_PROPOSEDWATER - TBYB27_SUSTAINABILITY_DATA.NC_EXISTINGWATER) / TBYB14_SI_BASELINE.NC_BASE_WATER) * 100) FROM TBYB14_SI_BASELINE,TBYB27_SUSTAINABILITY_DATA WHERE TBYB27_SUSTAINABILITY_DATA.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBYB27_SUSTAINABILITY_DATA.NC_SITE = TBYB14_SI_BASELINE.NC_SITE_ID_FK(+) AND TBYB27_SUSTAINABILITY_DATA.NC_BASELINEYEAR = TBYB14_SI_BASELINE.NC_YEAR(+) ) AS PCT_IMPACT_WATER,
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 570 AND NC_SUBSECTION_ID = 0) AS PROPOSAL_TEXT,
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 1456 AND NC_SUBSECTION_ID = 0) AS COMMENTS_EXPLANATIONS,
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 1458 AND NC_SUBSECTION_ID = 0) AS COMMENTS_ON_ADD_SI_IMPACTS,
<!--- Get Capital --->
(
SELECT
SUM(NVL((NC_QUANTITY * COST) * (1 + NC_TAX_RATE),0))
FROM
(
SELECT
E.*,
NVL(E.MC_COST,0) * FROM_CURR.NC_EXCHANGE_RATE / TO_CURR.NC_EXCHANGE_RATE COST,
E.MC_MAINT_COST * FROM_CURR.NC_EXCHANGE_RATE / TO_CURR.NC_EXCHANGE_RATE MAINT_COST
FROM
TBXS23_EXPENDITURES E,
TBXS41_EXCHANGE_RATE_CIT FROM_CURR,
TBXS41_EXCHANGE_RATE_CIT TO_CURR,
TBXP78_REQUESTS R,
V_TBXS13_STEPS SS
WHERE
R.NC_ACT_TYPE_ID_FK != 40
AND
R.NC_FORM_STEP_ID_FK = SS.NC_FORM_STEP_ID
AND
E.NC_REQUEST_ID_FK = R.NC_REQUEST_ID
AND
TO_CURR.NC_CURRENCY_ID = <cfqueryparam value="#session.objUser.getCurrencyPreference()#" cfsqltype="cf_sql_numeric">
AND
E.NC_CURRENCY_ID_FK = FROM_CURR.NC_CURRENCY_ID
AND
E.NC_EXPENDITURE_TYPE_ID_FK = 83
AND
R.DC_APPROVAL_DATE
BETWEEN
TO_CURR.DC_VALID_FROM
AND
TO_CURR.DC_VALID_TO
AND
R.DC_APPROVAL_DATE
BETWEEN
FROM_CURR.DC_VALID_FROM
AND
FROM_CURR.DC_VALID_TO
) WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID
)AS CAPITAL,
<!--- Get Capital --->
<!--- Project Expense One Time --->
(
SELECT
SUM(NVL((NC_QUANTITY * COST) * (1 + NC_TAX_RATE),0))
FROM
(
SELECT
E.*,
NVL(E.MC_COST,0) * FROM_CURR.NC_EXCHANGE_RATE / TO_CURR.NC_EXCHANGE_RATE COST,
E.MC_MAINT_COST * FROM_CURR.NC_EXCHANGE_RATE / TO_CURR.NC_EXCHANGE_RATE MAINT_COST
FROM
TBXS23_EXPENDITURES E,
TBXS41_EXCHANGE_RATE_CIT FROM_CURR,
TBXS41_EXCHANGE_RATE_CIT TO_CURR,
TBXP78_REQUESTS R,
V_TBXS13_STEPS SS
WHERE
R.NC_ACT_TYPE_ID_FK != 40
AND
R.NC_FORM_STEP_ID_FK = SS.NC_FORM_STEP_ID
AND
E.NC_REQUEST_ID_FK = R.NC_REQUEST_ID
AND
TO_CURR.NC_CURRENCY_ID = <cfqueryparam value="#session.objUser.getCurrencyPreference()#" cfsqltype="cf_sql_numeric">
AND
E.NC_EXPENDITURE_TYPE_ID_FK = 84
AND
E.NC_CURRENCY_ID_FK = FROM_CURR.NC_CURRENCY_ID
AND
R.DC_APPROVAL_DATE
BETWEEN
TO_CURR.DC_VALID_FROM
AND
TO_CURR.DC_VALID_TO
AND
R.DC_APPROVAL_DATE
BETWEEN
FROM_CURR.DC_VALID_FROM
AND
FROM_CURR.DC_VALID_TO
) WHERE NC_REQUEST_ID_FK = R.NC_REQUEST_ID
)AS PROJECT_EXPENSE
<!--- Project Expense One Time --->
FROM
TBXP78_REQUESTS R,
V_TBXS13_STEPS S,
TBXS39_ROI ROI,
TBYB27_SUSTAINABILITY_DATA SD
WHERE
R.NC_FORM_STEP_ID_FK = S.NC_FORM_STEP_ID
AND
R.NC_REQUEST_ID = ROI.NC_REQUEST_ID_FK(+)
AND
R.NC_REQUEST_ID = SD.NC_REQUEST_ID_FK(+)
AND
R.NC_ACT_TYPE_ID_FK != 40
这些是 CLOB 字段:
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 570 AND NC_SUBSECTION_ID = 0) AS PROPOSAL_TEXT,
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 1456 AND NC_SUBSECTION_ID = 0) AS COMMENTS_EXPLANATIONS,
(SELECT TBXS32_TEXT_SECTIONS.TC_TEXT FROM TBXS32_TEXT_SECTIONS WHERE TBXS32_TEXT_SECTIONS.NC_REQUEST_ID_FK = R.NC_REQUEST_ID AND TBXS32_TEXT_SECTIONS.NC_TEMPLATE_ID_FK = 1458 AND NC_SUBSECTION_ID = 0) AS COMMENTS_ON_ADD_SI_IMPACTS,