2012-10-19 14 views
7
पर अमल करने में असमर्थ

मेरे Google क्लाउड SQL तालिका 1,126,571 पंक्तियों को वर्तमान में और जोड़ने न्यूनतम 30 हजार हर day.When क्वेरी निष्पादित है:Google क्लाउड SQL: बयान

select count(distinct sno) as tot from visits 

संकेत यह त्रुटि निम्न उत्पन्न होगा एसक्यूएल:

Error 0: Unable to execute statement 

। क्लाउड एसक्यूएल क्वेरी 60 सेकंड के लिए अपवाद से अधिक है। तालिका बड़ी होने पर समस्या को दूर कैसे कर सकता है।

उत्तर

0

अपने कॉलम sno में INDEX जोड़ें और यह इसके प्रदर्शन में सुधार करेगा।

ALTER TABLE visits ADD INDEX (sno) 
+0

मेरी तालिका में प्रत्येक सेकेंड सम्मिलन चल रहा है। इसलिए इंडेक्सिंग प्रविष्टि क्वेरी प्रदर्शन को कम करने का कारण बनता है –

+0

@JinjuJoseph आप किसी अन्य तालिका में इच्छित मूल्य को अपडेट करने के लिए विज़िट पर ट्रिगर जोड़ सकते हैं जो फ़ील्ड टोटल में कुल योग कहता है। फिर आप वहां से समेकित मूल्य का चयन करेंगे। –

1

तालिका को दो तालिकाओं में विभाजित करें। एक नई यात्रा प्राप्त करने के लिए ... लेनदेन ... रिपोर्टिंग के लिए एक। रिपोर्टिंग टेबल इंडेक्स। नियमित आधार पर डेटा स्थानांतरित करें और साफ़ करें।

लेनदेन तालिका अपेक्षाकृत छोटी रहेगी और इस प्रकार यह गिनती होगी। इंडेक्स की वजह से रिपोर्टिंग टेबल गिनती होगी।

0

कई हिस्सों के लिए अपनी चयन क्वेरी को विभाजित करने का प्रयास करें, उदाहरण के लिए, पहली चयन क्वेरी 50000 तक सीमित होनी चाहिए, और फिर दूसरी चयन क्वेरी 50000 से शुरू की जानी चाहिए और 50000 तक सीमित होनी चाहिए।

1- रिकॉर्ड की संख्या प्राप्त करें:

आपको लगता है कि इस परिदृश्य से कर सकते हैं।

2- एक लूप बनाएं और इसे रिकॉर्ड गिनती पर समाप्त करें।

3 प्रत्येक पाश के लिए, चयन क्वेरी 50000 के रिकॉर्ड का चयन करें और एक datatable के लिए परिणाम संलग्न

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

आप इस SQL ​​क्वेरी बयान के आधार पर आपके चयन शुरू सूचकांक निर्दिष्ट कर सकते हैं:

SELECT * FROM mytable somefield LIMIT 50000 OFFSET 0; 

तो फिर तुम पूरे डेटा है कि आप चाहते हैं मिल जाएगा।

नोट: 60 सेकंड में अधिकतम रिकॉर्ड गणना लोड की जा सकती है यह देखने के लिए एक परीक्षण करें, इससे आपके लूप कम हो जाएंगे और इसलिए, प्रदर्शन में वृद्धि होगी।

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