Mysql तालिका बहुत अधिक समय देने के लिए शामिल होने, जबकि सरल चयन परिणाम तेजी से

वोट
-1

मैं एक InnoDB तालिका है daily_sales_msr

जब मैं में शामिल होने के बिना उस तालिका से कोई क्वेरी चलाने, क्वेरी जल्दी से उत्पादन देता है।

लेकिन, अगर मैं भी करने के लिए एक छोटी सी मेज के साथ कि तालिका में शामिल होने, तो यह बहुत ज्यादा समय लगता है। इस समस्या का समाधान क्या है?

उदाहरण के लिए:

SELECT
sku.ssku,
ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
MONTHNAME(daily_sales_msr.date) AS `month`
FROM
daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE
daily_sales_msr.date BETWEEN '2018-08-01'
AND '2018-08-08'
GROUP BY
daily_sales_msr.skid

इस क्वेरी 1000s की तुलना में अधिक समय लगता है।

किसी भी शामिल होने के बिना यह केवल 0.15s लेता है।

02/09/2018 को 05:26
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

प्रदर्शन के लिए सुनिश्चित करें कि आप उचित सूचकांक हो
आप एक समग्र सूचकांक पर इस्तेमाल कर सकते हैं आपके मामले में

table daily_sales_msr for  columns  (skid,date) 

और SQL के लिए आपके द्वारा समूह का उपयोग कर रहे हैं, लेकिन चयन में स्तंभ के कुछ समूह में एकत्रीकरण समारोह इस में सबसे mysql में db इंजन ई शुरू कर प्रपत्र 5.7 notb डिफ़ॉल्ट रूप से alloed है से संबंधित नहीं हैं नहीं .. इन स्तंभों के लिए परिणाम इतना अप्रत्याशित है आपके द्वारा समूह में ये कॉलम जोड़ने चाहिए

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MONTHNAME(daily_sales_msr.date) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid, month 

या इन स्तंभों के लिए भी एक एकत्रीकरण समारोह का उपयोग

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MAX(MONTHNAME(daily_sales_msr.date)) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid
02/09/2018 को 06:31
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more