Data Virtualizationにおけるサブクエリを含むクエリのパフォーマンス問題

最終更新: 2025年3月17日
Data Virtualizationにおけるサブクエリを含むクエリのパフォーマンス問題

副照会がある照会を実行すると、パフォーマンスの問題が発生する場合があります。

症状

副照会がある照会を実行しましたが、照会が結果を返すまでの時間が長すぎます。

問題の解決

この問題を解決するには、以下のようにします。
  1. ニックネーム並行フェッチが有効になっている場合は、生成されたアクセス・プランに移動します。
  2. 以下の例に示すように、SQL ステートメント内で副照会が結合に書き換えられていることを確認します。
    元の 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)
    ))
    書き換えられた 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. DB2_DV_OVERRIDES パラメーターのすべての値の末尾に、NO_SUBQPPD_MPP 値を追加します。 例えば、DB2_DV_OVERRIDES パラメーターの現行値が以下の値であるとします。
    DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,
    NO_SUBQPPD_MPP 値を追加すると、パラメーター値は以下の例のようになります。
    DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,NO_SBQPPD_MPP

    DB2_DV_OVERRIDES パラメーターをインスタンス・レベルで設定して、パラメーターがすべての照会に適用されるようにすることも、照会レベルで設定して、パラメーターが特定の照会に適用されるようにすることもできます。 そのためには、最適化プロファイル (OPTGUIDELINE) を特定の照会に適用できます。 詳しくは、 最適化プロファイル内の SQL コンパイラー・レジストリー変数を参照してください。