0 / 0
Volver a la versión inglesa de la documentación
Problemas de rendimiento en consultas con subconsultas en Data Virtualization
Última actualización: 26 nov 2024
Problemas de rendimiento en consultas con subconsultas en Data Virtualization

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,
  1. Si la captura paralela de apodos está habilitada, vaya al plan de acceso generado.
  2. 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,
  3. 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.

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información