Oracle - Optimización consulta

 
Vista:

Optimización consulta

Publicado por Alvaro (2 intervenciones) el 20/09/2007 20:18:54
Buenas : Alguien podría echarme una mano, tengo una consulta que entra por índices pero le cuesta mucho, saco el plan de ejecución y es muy pequeño (16), pero tarda más de tres horas en devolver datos, tengo que decir que las tablas wc_prod_rank_scd y
w_person_d tienen casi un millón de registros cada una. Os paso la consulta para que os hagais una idea.

SELECT DISTINCT tap.X_COUNTRY X_COUNTRY_ABB,
tap.X_SBTERR_NAME X_subterritory,
tap.X_BRAND_NAME X_brand,
tap.X_MONTH_DT X_DATE,
COUNT(DISTINCT crank.con_id) AS TARGETED_CUSTOMER
FROM wc_tap_sbterr_f tap,
wc_sales_cycle_d sc,
w_position_dh pos_hier,
w_product_d prod,
wc_prod_rank_scd crank,
w_person_d person,
w_position_d pos
WHERE (pos_hier.LVL6ANC_POSTN_ID, person.x_area_wid) IN
(SELECT DISTINCT geo.x_POSTN_ID, area.row_wid
FROM wc_geo_hier_scdh geo, w_area_d area
WHERE tap.X_SBTERR_NAME = geo.X_SUBTERRITORY_NAME
AND CONCAT(tap.x_month_wid, '31') <= geo.X_SB_SC_END_WID
AND CONCAT(tap.x_month_wid, '01') >= geo.X_SB_SC_START_WID
AND area.top_lvl_area_name = geo.X_BRICK_NAME)
AND crank.POSTN_ID = pos_hier.LVL7ANC_POSTN_ID
AND crank.X_TARGET_BU = pos_hier.X_SALES_FORCE_NAME
AND crank.X_SALES_CYCLE_WID = tap.X_SALES_CYCLE_WID
AND pos.INTEGRATION_ID = pos_hier.LVL6ANC_POSTN_ID
AND pos.X_INT_TERRITORY = crank.X_INT_TERRITORY
AND tap.X_PROD_WID = prod.row_wid
AND crank.PROD_ID = prod.integration_id
AND crank.con_id = person.integration_id
AND person.con_active_flg = 'Y'
AND crank.rating IN ('A', 'B', 'C')
AND sc.row_wid = tap.X_SALES_CYCLE_WID
AND TO_NUMBER(TO_CHAR(sc.X_SC_START_DATE, 'YYYYMMDD')) <= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYYMMDD'))
AND TO_NUMBER(TO_CHAR(sc.X_SC_END_DATE, 'YYYYMMDD')) >= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYYMMDD'))
GROUP BY TAP.X_COUNTRY,
tap.X_SBTERR_NAME,
tap.X_BRAND_NAME,
tap.X_MONTH_DT

un saludo y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder