2011-12-10 10 views
10

मैं mysql के लिए कंपनी ओरेकल डेटाबेस चले गए (हाँ मुझसे पूछते क्यों नहीं करते हैं) और (रिपोर्टिंग के लिए) कुछ प्रश्नों विशाल और mysql में काम कर रहे हैंओरेकल क्वेरी मिलती

उनमें से एक के साथ 4021 लाइनों है 89 INNER JOIN

यह पिछले वर्ष के लिए कंपनी के ग्राहक के लिए पूरी तरह से विवरण रिपोर्ट उत्पन्न करता है।

मुझे 2011 के लिए काम करने के बाद से उस रिपोर्ट की आवश्यकता है (क्योंकि हम जल्द ही वर्ष के अंत तक पहुंच रहे हैं) और मैंने कई वेबसाइटों पर देखा है कि अधिकतम बाईं ओर mysql के लिए शामिल है 60 कुछ शामिल है।

क्या मैं इस रिपोर्ट के साथ खराब हूं? या मेरे लिए इसे चलाने का कोई तरीका है?

+0

यदि आपको नए जुड़ने की आवश्यकता है क्योंकि आपकी रिपोर्ट में एक नया साल शामिल है, तो आपका डेटा मॉडल शायद गलत है। –

+1

कोई पूंजीकरण क्यों नहीं? –

उत्तर

0

इस के आसपास जाने के लिए आपको प्रोग्रामिंग भाषा में कूदना (या नीचे, नीचे जाना होगा) (रूबी, PHP, पायथन, इत्यादि) सभी को संभालने में मदद मिलेगी कि कई लोग मूल वस्तुओं का उपयोग करके आसानी से जुड़ सकते हैं पूरी तरह से एक विशाल जुड़ाव पर भरोसा करने के लिए।

और आप सही हैं, MySQL में मिलती है की अधिकतम संख्या 61 (http://dev.mysql.com/doc/refman/5.0/en/joins-limits.html)

+1

आपके द्वारा प्रदान किया गया लिंक कहता है कि किसी भी 'जॉइन' कथन में संदर्भित तालिकाओं की अधिकतम संख्या 61 है, न कि किसी भी एक प्रश्न में जॉइन की अधिकतम संख्या 61 है। अस्थायी तालिकाओं के लिए –

0

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

सूची पूछताछ जैसे पूर्व प्रश्न पूछ सकते हैं।

ग्राहक आईडी प्राप्त करने और ग्राहकों को किसी अन्य प्री-क्वेरी के रूप में शामिल करने के लिए हेडर सारांश ऑर्डर करने के लिए सभी ऑर्डर विवरणों के साथ जुड़ें। समग्र रिपोर्ट आवश्यकता में शामिल होने के लिए जो भी महत्वपूर्ण तत्व शामिल हों, सुनिश्चित करें।

जहां संभव हो वहां सूची जारी रखें और संभवतः आप एक गुच्छा को मार सकते हैं क्योंकि वे SUBQueries के परिणाम होंगे जहां कोई भी स्तर 61 में शामिल नहीं होगा।

0

उपयोग enums प्रकार है, कि तुम दर्दनाक बाएं से बचा लेगा

आप कुछ तालिकाओं तुम सिर्फ enum एक महान सुधार है कि का उपयोग करके निकाल सकते हैं अगर मिलती है।

डेटा आप किस तरह का

5

है के साथ विशेष रूप से मुझे लगता है कि आपकी रिपोर्ट में क्वेरी वैसे भी व्याख्या में using temporary का परिणाम देगा। आप लेन-देन में अपनी एकल क्वेरी को कई में तोड़ सकते हैं और अस्थायी तालिकाओं को स्पष्ट रूप से बना सकते हैं।

यदि आपके ओरेकल क्वेरी में टी-एसक्यूएल से WITH सबक्वायरीज़ हैं, तो मुझे यह और भी मददगार नहीं हो सकता है, मुझे नहीं पता कि वे ओरेकल में मौजूद हैं, लेकिन निश्चित रूप से MySQL में मौजूद नहीं हैं)।

+0

+1। वहाँ किया गया था कि। – Mchl

+0

सीटीई सामान्य डेटाबेस में मौजूद हैं लेकिन mysql :)))। अस्थायी तालिकाओं के लिए आवंटित स्थान भी mysql में एक सीमित संख्या है, आपको इसके बारे में भी सोचना चाहिए :)) –