2016-10-18 11 views
6

ओरेकल 11 जी से 12 सी तक माइग्रेशन के बाद हमारे पास निम्नलिखित चयन कथन के साथ एक बड़ा प्रदर्शन समस्या है। वही कथन 11 जी में ठीक काम करता है।खराब प्रदर्शन के साथ ओरेकल 12 सी में उप-चयन

टेबल और अनुक्रमित

-- Create table 
create table PS_CS_ADRART_TB 
(
    cs_adressmandant VARCHAR2(5) not null, 
    cs_person_id  VARCHAR2(20) not null, 
    cs_beziehung_id VARCHAR2(20) not null, 
    seqnum    INTEGER not null, 
    effdt    DATE, 
    eff_status   VARCHAR2(1) not null, 
    cs_adrart_cd  VARCHAR2(20) not null, 
    cs_adress_id  VARCHAR2(20) not null, 
    cs_kdnr_as400  VARCHAR2(8) not null, 
    cs_plzgk   VARCHAR2(11) not null, 
    cs_plz_pf   VARCHAR2(15) not null, 
    cs_aendgr_cd  VARCHAR2(20) not null, 
    cs_datasource_cd VARCHAR2(20) not null, 
    cs_betrag   NUMBER(14,4) not null, 
    cs_belegdat  DATE, 
    cs_adrtyp_xl  VARCHAR2(2) not null, 
    cs_checked   VARCHAR2(1) not null, 
    cs_journal_xl  VARCHAR2(4) not null, 
    address2   VARCHAR2(55) not null, 
    row_added_dttm  TIMESTAMP(6), 
    row_added_oprid VARCHAR2(30) not null, 
    row_lastmant_dttm TIMESTAMP(6), 
    row_lastmant_oprid VARCHAR2(30) not null, 
    cs_recstat_xl  VARCHAR2(4) not null, 
    cs_update_count NUMBER(10) not null 
) 
tablespace CS_APP 
    pctfree 10 
    initrans 1 
    maxtrans 255 
    storage 
    (
    initial 102416K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
-- Create/Recreate indexes 
create unique index PSACS_ADRART_TB on PS_CS_ADRART_TB (CS_ADRESSMANDANT, CS_KDNR_AS400, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PSBCS_ADRART_TB on PS_CS_ADRART_TB (CS_PERSON_ID) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PSCCS_ADRART_TB on PS_CS_ADRART_TB (CS_BEZIEHUNG_ID) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create unique index PS_CS_ADRART_TB on PS_CS_ADRART_TB (CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PSDCS_ADRART_TB on PS_CS_ADRART_TB (CS_PLZ_PF) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS0CS_ADRART_TB on PS_CS_ADRART_TB (CS_ADRESS_ID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS1CS_ADRART_TB on PS_CS_ADRART_TB (CS_KDNR_AS400, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 20M 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS2CS_ADRART_TB on PS_CS_ADRART_TB (ROW_ADDED_DTTM, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS3CS_ADRART_TB on PS_CS_ADRART_TB (ROW_ADDED_OPRID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS4CS_ADRART_TB on PS_CS_ADRART_TB (ROW_LASTMANT_DTTM, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS5CS_ADRART_TB on PS_CS_ADRART_TB (ROW_LASTMANT_OPRID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 
create index PS6CS_ADRART_TB on PS_CS_ADRART_TB (CS_RECSTAT_XL, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) 
    tablespace PSINDEX 
    pctfree 10 
    initrans 2 
    maxtrans 255 
    storage 
    (
    initial 40K 
    next 1M 
    minextents 1 
    maxextents unlimited 
); 

तालिका आकार

select count(*) from ps_cs_adrart_tb a 
--> 41367270 

चयन वक्तव्य

SELECT A.CS_ADRESS_ID, A.SEQNUM, TO_CHAR(A.EFFDT, 'YYYY-MM-DD') 
     from PS_CS_ADRART_TB A 
    where A.CS_ADRESSMANDANT = '001' 
     and a.cs_kdnr_as400 = '63916917' 
     and a.effdt = 
      (select max(b.effdt) 
       from ps_cs_adrart_tb b 
      where b.cs_adressmandant = a.cs_adressmandant 
       and b.cs_person_id = a.cs_person_id 
       and b.cs_beziehung_id = a.cs_beziehung_id 
       and b.seqnum = a.seqnum 
       and b.effdt <= trunc(sysdate) 
       ) 

के बारे में बताएं योजना ओरेकल 11g

-------------------------------------------------------------------------------------------- 
    | Id | Operation      | Name   | Rows | Bytes | Cost | Time  | 
    -------------------------------------------------------------------------------------------- 
    | 0 | SELECT STATEMENT    |     | 1 | 89 | 2 | 00:00:01 | 
    | * 1 | FILTER      |     |  |  |  |   | 
    | 2 | TABLE ACCESS BY INDEX ROWID | PS_CS_ADRART_TB | 1 | 89 | 1 | 00:00:01 | 
    | * 3 |  INDEX RANGE SCAN   | PSACS_ADRART_TB | 1 |  | 1 | 00:00:01 | 
    | 4 | SORT AGGREGATE    |     | 1 | 59 |  |   | 
    | 5 |  FIRST ROW     |     | 1 | 59 | 1 | 00:00:01 | 
    | * 6 |  INDEX RANGE SCAN (MIN/MAX) | PS_CS_ADRART_TB | 1 | 59 | 1 | 00:00:01 | 
    -------------------------------------------------------------------------------------------- 

    Predicate Information (identified by operation id): 
    ------------------------------------------ 
    * 1 - filter("A"."EFFDT"= (SELECT MAX("B"."EFFDT") FROM "PS_CS_ADRART_TB" "B" WHERE "B"."EFFDT"<=TRUNC([email protected]!) AND "B"."SEQNUM"=:B1 AND "B"."CS_BEZIEHUNG_ID"=:B2 AND "B"."CS_PERSON_ID"=:B3 AND 
     "B"."CS_ADRESSMANDANT"=:B4)) 
    * 3 - access("A"."CS_ADRESSMANDANT"='001' AND "A"."CS_KDNR_AS400"='63916917') 
    * 6 - access("B"."CS_ADRESSMANDANT"=:B1 AND "B"."CS_PERSON_ID"=:B2 AND "B"."CS_BEZIEHUNG_ID"=:B3 AND "B"."SEQNUM"=:B4 AND "B"."EFFDT"<=TRUNC([email protected]!))  

योजना ओरेकल 12C

------------------------------------------------------------------------------------------------------------ 
    | Id | Operation        | Name   | Rows  | Bytes  | Cost | Time  | 
    ------------------------------------------------------------------------------------------------------------ 
    | 0 | SELECT STATEMENT      |     |  1 |  140 | 34366 | 00:00:02 | 
    | * 1 | HASH JOIN       |     |  1 |  140 | 34366 | 00:00:02 | 
    | 2 | TABLE ACCESS BY INDEX ROWID BATCHED | PS_CS_ADRART_TB |  1 |  89 |  1 | 00:00:01 | 
    | * 3 |  INDEX RANGE SCAN     | PS1CS_ADRART_TB |  1 |   |  1 | 00:00:01 | 
    | 4 | VIEW        | VW_SQ_1   | 41889 | 2136339 | 34365 | 00:00:02 | 
    | * 5 |  FILTER        |     |   |   |  |   | 
    | 6 |  HASH GROUP BY      |     | 41889 | 2471451 | 34365 | 00:00:02 | 
    | * 7 |  INDEX RANGE SCAN     | PS_CS_ADRART_TB | 12746381 | 752036479 | 34365 | 00:00:02 | 
    ------------------------------------------------------------------------------------------------------------ 

    Predicate Information (identified by operation id): 
    ------------------------------------------ 
    * 1 - access("A"."EFFDT"="MAX(B.EFFDT)" AND "ITEM_1"="A"."CS_ADRESSMANDANT" AND "ITEM_2"="A"."CS_PERSON_ID" AND "ITEM_3"="A"."CS_BEZIEHUNG_ID" AND "ITEM_4"="A"."SEQNUM") 
    * 3 - access("A"."CS_KDNR_AS400"='63916917' AND "A"."CS_ADRESSMANDANT"='001') 
    * 5 - filter('001'='001') 
    * 7 - access("B"."CS_ADRESSMANDANT"='001' AND "B"."EFFDT"<=TRUNC([email protected]!)) 
    * 7 - filter("B"."EFFDT"<=TRUNC([email protected]!)) 


    Note 
    ----- 
    - dynamic sampling used for this statement     

के बारे में बताएं आप देख सकते हैं, सूचकांक PS_CS_ADRART_TB केवल CS_ADRESSMANDANT और EFFDT से डेटा फ़िल्टर करने के लिए इस्तेमाल कर रहे हैं और कहा कि काफी खराब है ।

निम्नलिखित थोड़ा अलग चयन विवरणों के साथ इंडेक्स का उपयोग ओरेकल 12 सी द्वारा उप-चयन के डेटा को निर्धारित करने के लिए किया जाता है।

बदलने जहां बाहरी की हालत

द्वारा चयन

SELECT A.CS_ADRESS_ID, A.SEQNUM, TO_CHAR(A.EFFDT, 'YYYY-MM-DD') 
    from PS_CS_ADRART_TB A 
    where a.cs_kdnr_as400 = '53916917' -- without CS_ADRESSMANDANT condition 
    and a.effdt = 
     (select max(b.effdt) 
      from ps_cs_adrart_tb b 
      where b.cs_adressmandant = a.cs_adressmandant and 
       b.cs_person_id = a.cs_person_id 
      and b.cs_beziehung_id = a.cs_beziehung_id 
      and b.seqnum = a.seqnum 
      and b.effdt <= trunc(sysdate) 
      ) 

    -------------------------------------------------------------------------------------------------- 
    | Id | Operation        | Name   | Rows | Bytes | Cost | Time  | 
    -------------------------------------------------------------------------------------------------- 
    | 0 | SELECT STATEMENT      |     | 1 | 89 | 2 | 00:00:01 | 
    | 1 | TABLE ACCESS BY INDEX ROWID BATCHED | PS_CS_ADRART_TB | 1 | 89 | 1 | 00:00:01 | 
    | * 2 | INDEX RANGE SCAN     | PS1CS_ADRART_TB | 1 |  | 1 | 00:00:01 | 
    | 3 |  SORT AGGREGATE     |     | 1 | 59 |  |   | 
    | 4 |  FIRST ROW      |     | 1 | 59 | 1 | 00:00:01 | 
    | * 5 |  INDEX RANGE SCAN (MIN/MAX)  | PS_CS_ADRART_TB | 1 | 59 | 1 | 00:00:01 | 
    -------------------------------------------------------------------------------------------------- 

    Predicate Information (identified by operation id): 
    ------------------------------------------ 
    * 2 - access("A"."CS_KDNR_AS400"='53916917') 
    * 2 - filter("A"."EFFDT"= (SELECT MAX("B"."EFFDT") FROM "PS_CS_ADRART_TB" "B" WHERE "B"."EFFDT"<=TRUNC([email protected]!) AND "B"."SEQNUM"=:B1 AND "B"."CS_BEZIEHUNG_ID"=:B2 AND "B"."CS_PERSON_ID"=:B3 AND 
     "B"."CS_ADRESSMANDANT"=:B4)) 
    * 5 - access("B"."CS_ADRESSMANDANT"=:B1 AND "B"."CS_PERSON_ID"=:B2 AND "B"."CS_BEZIEHUNG_ID"=:B3 AND "B"."SEQNUM"=:B4 AND "B"."EFFDT"<=TRUNC([email protected]!)) 


    Note 
    ----- 
    - dynamic sampling used for this statement 

आँकड़े सबसिलेक्ट

SELECT A.CS_ADRESS_ID, A.SEQNUM, TO_CHAR(A.EFFDT, 'YYYY-MM-DD'), a.cs_person_id 
     from PS_CS_ADRART_TB A 
    where a.cs_kdnr_as400 = '63916917' and a.cs_adressmandant = '001' 
     and a.effdt = 
      (select min(b.effdt) 
       from ps_cs_adrart_tb b 
      where b.cs_adressmandant = a.cs_adressmandant 
       and b.cs_person_id = a.cs_person_id 
       and b.cs_beziehung_id = a.cs_beziehung_id 
       and b.seqnum = a.seqnum 
       and b.effdt <= sysdate 
       ); 

    --------------------------------------------------------------------------------------------------- 
    | Id | Operation        | Name   | Rows | Bytes | Cost | Time  | 
    --------------------------------------------------------------------------------------------------- 
    | 0 | SELECT STATEMENT      |     | 1 | 109 | 2 | 00:00:01 | 
    | 1 | NESTED LOOPS       |     | 1 | 109 | 2 | 00:00:01 | 
    | 2 | TABLE ACCESS BY INDEX ROWID BATCHED | PS_CS_ADRART_TB | 1 | 89 | 1 | 00:00:01 | 
    | * 3 |  INDEX RANGE SCAN     | PS1CS_ADRART_TB | 1 |  | 1 | 00:00:01 | 
    | * 4 | VIEW PUSHED PREDICATE    | VW_SQ_1   | 1 | 20 | 1 | 00:00:01 | 
    | 5 |  SORT GROUP BY      |     | 1 | 59 | 1 | 00:00:01 | 
    | * 6 |  INDEX RANGE SCAN     | PS_CS_ADRART_TB | 1 | 59 | 1 | 00:00:01 | 
    --------------------------------------------------------------------------------------------------- 

    Predicate Information (identified by operation id): 
    ------------------------------------------ 
    * 3 - access("A"."CS_KDNR_AS400"='63916917' AND "A"."CS_ADRESSMANDANT"='001') 
    * 4 - filter("A"."EFFDT"="MIN(B.EFFDT)" AND "ITEM_1"="A"."CS_ADRESSMANDANT") 
    * 6 - access("B"."CS_ADRESSMANDANT"='001' AND "B"."CS_PERSON_ID"="A"."CS_PERSON_ID" AND "B"."CS_BEZIEHUNG_ID"="A"."CS_BEZIEHUNG_ID" AND "B"."SEQNUM"="A"."SEQNUM" AND "B"."EFFDT"<[email protected]!) 


    Note 
    ----- 
    - dynamic sampling used for this statement 

अनुक्रमित के पुनर्निर्माण में min()max() के बजाय का उपयोग करना (ऊपर वर्णित के रूप में) और अद्यतन करने

EXEC DBMS_STATS.delete_table_stats('SYSADM', 'PS_CS_ADRART_TB'); 
-- EXEC DBMS_STATS.gather_table_stats('SYSADM', 'PS_CS_ADRART_TB'); 
EXEC DBMS_STATS.gather_table_stats(ownname => 'SYSADM', tabname => 'PS_CS_ADRART_TB', cascade => true); 

मदद नहीं करता है।

यहां क्या हो रहा है? किसी भी सलाह की अत्यधिक सराहना की जाती है। अग्रिम में धन्यवाद।

+1

के साथ प्रयास करें कृपया मुझे पता तुम क्यों नीचे सवाल वोट दे सकते हैं। –

+2

प्रश्न स्पष्ट है, अच्छी तरह से टैग किया गया है, आवश्यक संरचनाओं को बनाने के लिए सभी बयान शामिल हैं, तालिकाओं के आकार पर सूचनाएं देता है, इसमें कई प्रयास और प्रत्येक कथन के लिए योजना शामिल है ... मुझे यह नहीं पता कि इस तरह और क्या होना चाहिए प्रश्न में शामिल हैं ... +1 – Aleksej

+1

"* इस कथन के लिए उपयोग किए जाने वाले गतिशील नमूना * 12 सी योजना में इंगित करता है कि आंकड़े 'collect_table_stats()' के बावजूद अद्यतित नहीं हैं। क्या यह कॉल करता है यदि आप कॉल करते हैं 'collect_table_stats()' 'cascade => true' के साथ? (और स्पष्ट रूप से बाहर निकलने के लिए: क्या SYSADM वास्तव में उन तालिकाओं का _owner_ है?) –

उत्तर

1

प्रयास करें।

आप

alter session set "_unnest_subquery" = FALSE; 
+0

यही वह है! ओरेकल समर्थन ओरेकल डेटाबेस पर पीपुल्स सॉफ्ट अनुप्रयोगों के प्रदर्शन को बेहतर बनाने के लिए छिपे पैरामीटर _unnest_subquery को FALSE पर सेट करने की अनुशंसा करता है। Http://www.bobbydurrettdba.com/2012/11/07/_unnest_subqueryfalse-for-peoplesoft-performance/ पर वर्णित वही व्यवहार है –

0

फ्रैंक। जैसा कि मैं समझता हूं कि आप किसी भी cs_person_id और cs_beziehung_id द्वारा एक आखिरी पंक्ति प्राप्त करना चाहते हैं जहां b.effdt आज से कम या बराबर है। सबसे पहले आप चुनिंदाता के बारे में जानकारी के साथ सांख्यिकी इकट्ठा कर सकते हैं। यह सीबीओ को पसंद करने में मदद करता है।

BEGIN 
dbms_stats.Gather_table_stats('SYSADM', 'PS_CS_ADRART_TB', 
method_opt => 'FOR COLUMNS SIZE 254 CS_KDNR_AS400 CS_ADRESSMANDANT'); 
END; 
/

Anothr एक सोचता है कि मुझे क्या लगता है। आपके पास बहुत सारे इंडेक्स चुड़ैल अद्वितीय के रूप में बनाए जा सकते हैं। इसमें पहले से ही अद्वितीय इंडेक्स कॉलम हैं।

create unique index PS1CS_ADRART_TB on PS_CS_ADRART_TB (CS_KDNR_AS400, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT) ; 
create unique index PS0CS_ADRART_TB on PS_CS_ADRART_TB (CS_ADRESS_ID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS1CS_ADRART_TB on PS_CS_ADRART_TB (CS_KDNR_AS400, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS2CS_ADRART_TB on PS_CS_ADRART_TB (ROW_ADDED_DTTM, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS3CS_ADRART_TB on PS_CS_ADRART_TB (ROW_ADDED_OPRID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS4CS_ADRART_TB on PS_CS_ADRART_TB (ROW_LASTMANT_DTTM, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS5CS_ADRART_TB on PS_CS_ADRART_TB (ROW_LASTMANT_OPRID, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 
create unique index PS6CS_ADRART_TB on PS_CS_ADRART_TB (CS_RECSTAT_XL, CS_ADRESSMANDANT, CS_PERSON_ID, CS_BEZIEHUNG_ID, SEQNUM, EFFDT); 

और अंत में मैं मुझे लगता है कि आप FALSE लिए पैरामीटर _unnest_subquery स्थापित करना चाहिए क्वेरी पुनर्लेखन के लिए बाहर करने के लिए सबक्वेरी

SELECT cs_adress_id,seqnum, effdt_chr 
FROM (SELECT /* */ a.cs_adress_id 
      ,a.seqnum 
      ,to_char(a.effdt, 'YYYY-MM-DD') AS effdt_chr 
      ,dense_rank() over(PARTITION BY a.cs_adressmandant, a.cs_person_id 
             , a.cs_beziehung_id, a.seqnum 
           ORDER BY a.effdt DESC) AS rnk 
    FROM ps_cs_adrart_tb a 
    WHERE a.cs_adressmandant = '001' 
     AND a.cs_kdnr_as400 = '63916917' 
     AND a.effdt <= trunc(sysdate) 
) 
WHERE rnk = 1; 
+0

हां, बयान दिए गए व्यक्ति के लिए वर्तमान डेटा का चयन करता है। व्याख्या योजना में सांख्यिकीय मूल्य अद्यतित हैं (12746381 पंक्तियां CS_ADRESSMANDANT = 001 और EFFDT = sysdate के लिए पर्याप्त मान है), इसलिए सवाल यह है कि आगे के फ़ील्ड CS_PERSON_ID, CS_BEZIEHUNG_ID और SEQNUM इस अनुक्रमणिका का उपयोग नहीं किया जाता है। और हां, हम चुनिंदा कथन या इंडेक्स बदल सकते हैं, लेकिन हम साइड इफेक्ट्स द्वारा प्रयास और जोखिम से बचने के लिए हमारे आवेदन के परिवर्तन को कम करने का प्रयास करते हैं। –

+0

फिर भी मैंने इसे COLUMNS SIZE 254 CS_KDNR_AS400 CS_ADRESSMANDANT'' के लिए 'method_opt => 'के साथ आज़माया है - लेकिन सफलता के बिना। –

+0

यह हैश_ग्रुप_बी के साथ एक समस्या की तरह दिखता है। क्या आप कृपया '/ * + opt_param (' _ optimizer_aggr_groupby_elim ',' true ') */'के साथ योजना क्वेरी जांच सकते हैं? –

संबंधित मुद्दे