0 / 0
Go back to the English version of the documentation
Problemy z wydajnością w zapytaniach z podzapytaniami w programie Watson Query
Last updated: 31 mar 2023
Problemy z wydajnością w zapytaniach z podzapytaniami w programie Watson Query

W przypadku uruchomienia zapytania, które zawiera podzapytania, mogą wystąpić problemy z wydajnością.

Objawy

Użytkownik uruchamia zapytanie, które ma podzapytania, ale zapytanie trwa zbyt długo, aby zwracane były wyniki.

Rozwiązanie problemu

Aby rozwiązać ten problem,
  1. Jeśli włączone jest pobieranie równoległe pseudonimu, przejdź do wygenerowanego planu dostępu.
  2. Sprawdź, czy podzapytanie zostało ponownie zapisane w łączeniu w instrukcji SQL, tak jak przedstawiono to w poniższym przykładzie.
    Oryginalna instrukcja SQL
    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)
    ))
    Przepisana instrukcja SQL
    (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. Na końcu wszystkich wartości parametru DB2_DV_OVERRIDES należy dodać wartość NO_SUBQPPD_MPP . Na przykład, jeśli bieżące wartości parametru DB2_DV_OVERRIDES są następujące.
    DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,
    Po dodaniu wartości parametru NO_SUBQPPD_MPP wartości parametrów są wyświetlane w poniższym przykładzie.
    DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,NO_SBQPPD_MPP

    Parametr DB2_DV_OVERRIDES można ustawić na poziomie instancji, tak aby parametr ten miał zastosowanie do wszystkich zapytań lub na poziomie zapytania, tak aby parametr miał zastosowanie do konkretnego zapytania. Aby to zrobić, można zastosować profile optymalizacji (OPTGUIDELINE) do konkretnego zapytania. Więcej informacji na ten temat zawiera sekcja Zmienne rejestru kompilatora SQL w profilu optymalizacji.

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more