Problemas de desempenho em consultas com subconsultas na Data Virtualization
Se você executar uma consulta que tenha subconsultas, será possível encontrar problemas de desempenho.
Sintomas
Você executa uma consulta que possui subconsultas, mas a consulta demora muito para retornar resultados.Resolvendo o problema
Para resolver esse problema,
- Se a busca paralela de apelido estiver ativada, acesse o plano de acesso gerado.
- Verifique se sua subconsulta foi regravada em uma junção na instrução SQL, conforme mostrado no exemplo a seguir.
- Instrução 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) ))- Instrução SQL gravada novamente
(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,
- Ao final de todos os valores do parâmetro DB2_DV_OVERRIDES, inclua o valor NO_SUBQPPD_MPP. Por exemplo, se os valores atuais do parâmetro DB2_DV_OVERRIDES forem como a seguir.
DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,Depois de incluir o valor NO_SUBQPPD_MPP, os valores de parâmetro serão mostrados no exemplo a seguir.DB2_DV_OVERRIDES=EN_OJMQT,EN_JOINFILTER,EN_GAIANQUERY_JOINFILTER,NO_SBQPPD_MPPÉ possível configurar o parâmetro DB2_DV_OVERRIDES no nível da instância para que o parâmetro se aplique a todas as consultas, ou no nível da consulta para que o parâmetro se aplique a uma determinada consulta. Para fazer isso, é possível aplicar perfis de otimização (OPTGUIDELINE) a uma consulta específica. Para obter mais informações, consulte Variáveis de registro do compilador SQL em um perfil de otimização.