Translation not up to date
The translation of this page does not represent the latest version. For the latest updates, see the English version of the documentation.
Last updated: 31 mar 2023
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,
- Jeśli włączone jest pobieranie równoległe pseudonimu, przejdź do wygenerowanego planu dostępu.
- 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,
- 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.