Volver a la versión inglesa de la documentaciónProblemas de rendimiento en consultas con subconsultas en Data Virtualization
Problemas de rendimiento en consultas con subconsultas en Data Virtualization
Última actualización: 26 nov 2024
Su ejecuta una consulta que tiene subconsultas, puede tener problemas de rendimiento.
Síntomas
Ejecuta una consulta que tiene subconsultas, pero la consulta tarda demasiado en devolver resultados.Resolución del problema
Para resolver este problema,
- Si la captura paralela de apodos está habilitada, vaya al plan de acceso generado.
- Compruebe que la subconsulta se haya reescrito en una unión en la sentencia SQL, tal como se muestra en el ejemplo siguiente.
- Sentencia SQL original
SELECT A5."CD_GENDER" C0, A5."CD_MARITAL_STATUS" C1, A5."CD_EDUCATION_STATUS" C2, A5."CD_PURCHASE_ESTIMATE" C3, A5."CD_CREDIT_RATING" C4, A5."CD_DEP_COUNT" C5, A5."CD_DEP_EMPLOYED_COUNT" C6, A5."CD_DEP_COLLEGE_COUNT" C7 FROM "TPCDS1TB"."CUSTOMER_ADDRESS" A1, "TPCDS1TB"."CUSTOMER" A2, "TPCDS1TB"."CUSTOMER_DEMOGRAPHICS" A5 WHERE (A1."CA_COUNTY" IN ('Allen County', 'Rock County', 'Modoc County', 'Yamhill County', 'Lee County')) AND (A2."C_CURRENT_ADDR_SK" = A1."CA_ADDRESS_SK") AND (1 = (SELECT DISTINCT 1 FROM "TPCDS1TB"."STORE_SALES" A3, "TPCDS1TB"."DATE_DIM" A4 WHERE (A2."C_CUSTOMER_SK" = A3."SS_CUSTOMER_SK") AND (A3."SS_SOLD_DATE_SK" = A4."D_DATE_SK") AND (A4."D_YEAR" = 1999) AND (2 <= A4."D_MOY") AND (A4."D_MOY" <= 5) ))
- Sentencia SQL reescrita
(SELECT Q3.CD_GENDER, Q3.CD_MARITAL_STATUS, Q3.CD_EDUCATION_STATUS, Q3.CD_PURCHASE_ESTIMATE, Q3.CD_CREDIT_RATING, Q3.CD_DEP_COUNT, Q3.CD_DEP_EMPLOYED_COUNT, Q3.CD_DEP_COLLEGE_COUNT FROM TPCDS1TB.CUSTOMER_ADDRESS AS Q1, TPCDS1TB.CUSTOMER AS Q2, TPCDS1TB.CUSTOMER_DEMOGRAPHICS AS Q3, (SELECT DISTINCT 1 FROM TPCDS1TB.DATE_DIM AS Q4, TPCDS1TB.STORE_SALES AS Q5 WHERE (Q4.D_MOY <= 5) AND (2 <= Q4.D_MOY) AND (Q4.D_YEAR = 1999) AND (Q5.SS_SOLD_DATE_SK = Q4.D_DATE_SK) AND (Q2.C_CUSTOMER_SK = Q5.SS_CUSTOMER_SK) ) AS Q6,
- Al final de todos los valores del parámetro DB2_DV_OVERRIDES, añada el valor NO_SUBQPPD_MPP. Por ejemplo, si los valores actuales del parámetro DB2_DV_OVERRIDES son los siguientes.
DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,
Después de añadir el valor NO_SUBQPPD_MPP, los valores de parámetro se muestran en el ejemplo siguiente.DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,NO_SBQPPD_MPP
Puede establecer el parámetro DB2_DV_OVERRIDES en el nivel de la instancia, de modo que el parámetro se aplique a todas las consultas o bien en el nivel de la consulta, para que el parámetro se aplique a una consulta determinada. Para hacerlo, puede aplicar perfiles de optimización (OPTGUIDELINE) a unaconsulta específica. Para obtener más información, consulte Variables de registro del compilador SQL en un perfil de optimización.