2011-02-10 17 views
5

मैं समान इंडेक्स सेट और टेबल आकार के साथ 2 अलग-अलग वातावरणों पर एक ही SQL (नीचे) चला रहा हूं। लेकिन वे मुझे 2 अलग समझाने की योजना (attached)एक ही एसक्यूएल लेकिन अलग-अलग योजना

  1. का उपयोग करता है एक मर्ज कार्तीय जुड़ें दिया - बहुत धीमी गति से
  2. का उपयोग करता PX समन्वयक/PX संदेश/PX प्राप्त करें - बहुत तेजी से

क्वेरी :

SELECT * 
FROM SIEBEL.S_PARTY PRTY, SIEBEL.S_CONTACT CONT, HPQ_IF_ENTERPRISE_DIRECTORY ED,SIEBEL.S_BU BU 
WHERE PRTY.ROW_ID = CONT.PAR_ROW_ID 
AND BU.ROW_ID(+)=CONT.BU_ID 
AND CONT.EMP_NUM IS NOT NULL 
AND ED.HPSTATUS NOT IN ('Terminated', 'Retired', 'Deceased') 
AND ED.EMPLOYEENUMBER = UPPER (LPAD (CONT.EMP_NUM, 8, '0')) 
AND (SUBSTR(ED.MODIFYTIMESTAMP,1,14) >= '19800101' OR ED.MODIFYTIMESTAMP IS NULL) 

कोई विचार यह अंतर पैदा करने के लिए संभावित चीजें क्या हैं? और दूसरी व्याख्या योजना (पीएक्स चीजों) के साथ क्या मतलब है?

ध्यान दें कि मैं SQL क्वेरी (उत्पादन में फ्रीज) को बदलने की तलाश नहीं कर रहा हूं।

बहुत बहुत धन्यवाद।

उत्तर

8

पीएक्स parallel processing इंगित करता है। यह सत्र सेटिंग्स के कारण अन्य डेटाबेस पर उपलब्ध नहीं हो सकता है (या यदि अन्य डेटाबेस एक अलग संस्करण या संस्करण है)।

+0

धन्यवाद गैरी, आप सही हैं। मैंने पाया कि यह समस्या "इंडेक्स" के कारण होने वाली डिग्री के कारण होती है। मुझे लगता है कि यह डीबी सत्र स्तर से डिग्री मूल्य लेगा जो अलग हो सकता है। सूचकांक स्तर पर डिग्री 4 होने के बाद, मैं इसे हल करने में सक्षम था। धन्यवाद। – iwan

4

किसी प्रश्न के लिए योजना तालिका आकार या अनुक्रमणिका पर निर्भर नहीं है, बल्कि कई अन्य कारकों पर भी मुख्य रूप से तालिका, इसके कॉलम और इसकी अनुक्रमणिका के आंकड़े हैं। इन आंकड़ों में क्लस्टरिंग कारक जैसी चीजें शामिल हैं, जो गणना की गई लागत में बड़ा अंतर डाल सकती हैं।

इसके अतिरिक्त, विभिन्न सिस्टम आंकड़े, अनुकूलक पैरामीटर, तालिका संरचना (उदा। विभाजित बनाम गैर-विभाजित), और डेटाबेस ब्लॉक आकार, सभी खेल में आते हैं और वातावरण के बीच मामूली अंतर एक अलग योजना का अनुकूलन कर सकता है।

+0

आप सही जेफरी हैं, धन्यवाद। – iwan

3

क्या टेबलों में एक अलग डिग्री है? इस क्वेरी को दोनों वातावरण में जांचें:

select table_name, degree from all_tables where table_name in ('S_PARTY', 'S_CONTACT', 'HPQ_IF_ENTERPRISE_DIRECTORY','S_BU'); 
+0

धन्यवाद जोनियरल्स, मेरी स्थिति में सही उत्तर देने के लिए आपकी सराहना करते हैं। मुझे परेशान है कि मुझे कौन से जवाब स्वीकार करना चाहिए, क्योंकि उनमें से सभी सही हैं :) – iwan

+0

यह ठीक है iwan, केवल उत्तर देने वाले उत्तरों को ऊपर उठाएं, उत्तर को "सही" उत्तर दें जो सबसे उपयोगी था, और हम सभी खुश होंगे:) –

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