我正在运行 Oracle 10g。下面的查询需要大约 25 分钟才能运行。我查看了执行计划,据我所知,大约 80% 的成本是DISTINCT COUNT
.
SELECT STG.dts_start_dt_wid,
ML.sales_org_wid,
ML.cost_center_wid,
ML.chnl_type_wid,
ML.x_generic_lead_source_wid,
ML.x_specific_lead_source_wid,
ML.x_order_category_wid,
Count(DISTINCT ML.row_wid) AS TOTAL_ACTIVE_LICENSES
FROM wc_lsp_master_license_d ML,
wc_reflex_daily_activity_a_stg STG
WHERE ML.license_class = 'REFLEX'
AND STG.dts_start_dt_wid BETWEEN ML.extensions_start_dt_wid AND
ML.extensions_end_dt_wid
AND ML.license_name NOT LIKE '%demo@rosettastone.com'
GROUP BY STG.dts_start_dt_wid,
ML.sales_org_wid,
ML.cost_center_wid,
ML.chnl_type_wid,
ML.x_generic_lead_source_wid,
ML.x_specific_lead_source_wid,
ML.x_order_category_wid;
不幸的是,我需要计算不同的 row_wids。所以我想弄清楚是否有什么办法可以让第一个查询运行得更快。
这是执行计划的截图:
对此的任何帮助或反馈都会很棒。
谢谢!