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 の数を取得する必要があります。そのため、最初のクエリをより高速に実行するためにできることがあるかどうかを把握しようとしています。
実行計画のスクリーンショットを次に示します。
これに関するヘルプやフィードバックは素晴らしいでしょう。
ありがとう!