2015-10-07 6 views
9

मुझे डेटाबेस से कुल उपलब्ध qty की गणना करने की आवश्यकता है, और इसके लिए मुझे कुछ तालिकाओं के साथ जुड़ने की आवश्यकता है। मैं अपने पूरे क्वेरी पेस्ट कर सकते हैं नहीं है, लेकिन बुनियादी संरचना निम्नलिखित है:इस क्वेरी की तुलना में तेज़ी से मात्रा की गणना करें

select sum(qty) as qty, field 
from 
(
    (
     select SUM(table1.qty) as qty , field 
     from 
     table1 
     left join table2 on table1.field = table2.field 
     left join table3 on table3.field = table2.field 
     where condition 
     group by fieldname 
    ) 
    UNION ALL 
    (
     selecy SUM(table1.qty) as qty,field 
     from 
     table1 
     left join table2 on table1.field = table2.field 
     left join table3 on table3.field = table2.field 
     where condition 
     group by fieldname 
    ) 
    UNION ALL 
    (
     select SUM(table1.qty) as qty, field 
     from 
     table1 
     left join table2 on table1.field = table2.field 
     left join table3 on table3.field = table2.field 
     where condition 
     group by fieldname 
    ) 
    ... 
    .. 
    12 times 
) as temp 
LEFT JOIN another_main_table ON another_main_table.field = temp.field 

मैं प्रत्येक तालिका के अनुक्रमित का ध्यान रखा गया है, लेकिन वहाँ कुछ यूनियनों जो अपेक्षा से अधिक समय समय ले रहे हैं कर रहे हैं। इस क्वेरी में लगभग 45 टेबल उपयोग किए जाते हैं और सभी की पूरी तरह से जांच की जाती है। कुछ तालिकाओं में लगभग 2.6 मिलियन रिकॉर्ड हैं। क्या आप कृपया मुझे सुझाव दे सकते हैं कि मैं परिणाम 1/2 सेकंड में कैसे प्राप्त कर सकता हूं? अभी तक मुझे परिणाम लगभग एक मिनट में मिल रहा है।

+0

यह स्पष्ट नहीं है कि आप इस क्वेरी के साथ क्या करने की जरूरत। क्या टेबल 1, टेबल 2, टेबल 3 सभी प्रश्नों में समान हैं? यदि ऐसा है तो 'WHERE कंडीशन 1 या कंडीशन 2 या ..... ' – valex

+0

के साथ एक क्वेरी का उपयोग करें यह एक बदसूरत क्वेरी हो सकती है, लेकिन आपको अधिक पूर्ण क्वेरी पोस्ट करने की आवश्यकता हो सकती है। यदि आपको यहां स्वीकार करने के लिए बहुत बड़ा है तो आपको पेस्टबिन.com जैसे कुछ ऑफ-साइट स्थान पर पोस्ट करने की भी आवश्यकता हो सकती है। – DRapp

+0

हे .. सभी टेबल तालिका 1, तालिका 2, तालिका 3 अलग हैं। मुझे पता है कि क्या मैं यहां प्रश्न पेस्ट कर सकता हूं, यह मुझे मार्गदर्शन करना अधिक आसान होगा .. लेकिन यहां प्रश्न पोस्ट नहीं कर सकता क्योंकि .. मुझे डेटाबेस और तालिकाओं के बारे में जानकारी प्रकट नहीं करने के लिए बाध्य किया गया है :(क्षमा करें। –

उत्तर

1

चूंकि आपका दिया गया उदाहरण उचित समाधानों को उचित रूप से उचित नहीं ठहरा सकता है, लेकिन फिर भी यदि मैं आपकी क्वेरी की मोटे तौर पर जांच करता हूं, तो आपने बाएं जॉइन का उपयोग किया है, इसलिए इसमें अधिक समय लगेगा इनर जॉइन की तुलना में।

तो, उपयोग अंदरूनी शामिल हों अपने डेटा परमिट अगर

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