Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL SUM क्वेरी बेहद धीमी है

(हां, मैं दूसरा जोड़ रहा हूं उत्तर। औचित्य:यह अंतर्निहित समस्या को एक अलग तरीके से संबोधित करता है।)

अंतर्निहित समस्या यह प्रतीत होती है कि एक निरंतर बढ़ती "लेन-देन" तालिका है जिसमें से विभिन्न आंकड़े प्राप्त किए जाते हैं, जैसे SUM(amount) . तालिका (तालिकाओं) के बढ़ने के साथ ही इसका प्रदर्शन और खराब होता जाएगा।

इस उत्तर का आधार डेटा को दो तरह से देखना होगा:"इतिहास" और "वर्तमान"। Transactions इतिहास है। एक नई तालिका होगी Current प्रत्येक उपयोगकर्ता के लिए कुल। लेकिन मुझे ऐसा करने के कई तरीके दिखाई देते हैं। प्रत्येक में कुछ प्रकार के उप-योग शामिल होते हैं ताकि उत्तर पाने के लिए 773K पंक्तियों को जोड़ने से बचा जा सके।

  • पारंपरिक बैंकिंग तरीका... प्रत्येक रात दिन के Transactions का मिलान करती है और उन्हें Current . में जोड़ें ।
  • भौतिक रूप से देखने का तरीका... हर बार Transactions में एक पंक्ति जोड़ी जाती है , वेतन वृद्धि Current
  • संकर:दैनिक उप-योग को "सारांश तालिका" में रखें। SUM . प्राप्त करने के लिए उन उप-योगों का योग करें कल रात तक।

मेरे ब्लॉग में सारांश तालिकाएं पर अधिक चर्चा

ध्यान दें कि बैंकिंग या हाइब्रिड तरीके से अप-टू-सेकंड बैलेंस थोड़ा मुश्किल है:

  1. पिछली रात की राशि प्राप्त करें
  2. दिन के दौरान हुआ कोई भी लेन-देन जोड़ें।

कोई भी तरीका बहुत होगा उपयोगकर्ता के लिए सभी 773K पंक्तियों को स्कैन करने से तेज़, लेकिन यह अधिक जटिल कोड होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आदेश में IS NULL और COALESCE का उपयोग करना सिद्धांत क्वेरीबिल्डर द्वारा

  2. MYSQL यदि कोई चुनिंदा क्वेरी 0 पंक्तियों को लौटाती है तो दूसरा चयन क्वेरी?

  3. Mysql में उपनाम पर फ़िल्टर करना

  4. MYSQL टिनीब्लॉब बनाम लॉन्गब्लॉब

  5. स्प्रिंग बूट जेपीए:MySQL के लिए बल्क लोड डेटा के लिए लाइब्रेरी का उपयोग करें