मैं एक MySQL डेटाबेस बना रहा हूं जिसमें खमीर की प्रजातियों में डीएनए के विशेष सबस्ट्रिंग्स के बारे में प्रविष्टियां हैं। मेरी तालिका इस तरह दिखती है:टेक्स्ट फ़ील्ड पर COUNT और GROUP धीमा लगता है
+--------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+-------+
| species | text | YES | MUL | NULL | |
| region | text | YES | MUL | NULL | |
| gene | text | YES | MUL | NULL | |
| startPos | int(11) | YES | | NULL | |
| repeatLength | int(11) | YES | | NULL | |
| coreLength | int(11) | YES | | NULL | |
| sequence | text | YES | MUL | NULL | |
+--------------+---------+------+-----+---------+-------+
लगभग 1.8 मिलियन रिकॉर्ड हैं। क्वेरी का एक प्रकार में मैं यह देखने के लिए कि कितने डीएनए सबस्ट्रिंग प्रजातियों और क्षेत्र के प्रत्येक प्रकार के साथ जुड़े रहे हैं चाहते हैं, तो मैं इस क्वेरी जारी करते हैं:
select species, region, count(*) group by species, region;
प्रजातियों और क्षेत्र स्तंभ केवल दो संभव प्रविष्टियाँ (संरक्षित/scer प्रजातियों के लिए, और क्षेत्र के लिए प्रमोटर/कोडिंग) अभी तक यह प्रश्न लगभग 30 सेकंड लेता है।
क्या इस प्रकार की क्वेरी के लिए तालिका के आकार को देखते हुए यह सामान्य समय है? क्या यह धीमा है क्योंकि मैं सरल पूर्णांक या बूलियन मानों के बजाय टेक्स्ट फ़ील्ड का उपयोग कर रहा हूं (मैं टेक्स्ट फ़ील्ड पसंद करता हूं क्योंकि कई गैर-सीएस शोधकर्ता डीबी का उपयोग करेंगे)। किसी अन्य विचार और सुझावों का स्वागत किया जाएगा।
क्षमा करें अगर यह एक हड्डी का सवाल है, तो मैं एक एसक्यूएल neophyte हूँ।
पीएस मैंने this question भी देखा है लेकिन प्रस्तावित समाधान जो मैं कर रहा हूं उसके लिए प्रासंगिक प्रतीत नहीं होता है।
संपादित करें: उन क्षेत्रों को VARCHARs में कनवर्ट करना रनटाइम को ~ 2.5 सेकंड तक कम कर देता है। नोट मैंने इसे ईएनई के खिलाफ भी समय दिया, जिसमें एक समान समय था।
आपकी प्राथमिक कुंजी कौन सा फ़ील्ड है? –
मेरे पास प्राथमिक कुंजी नहीं है। मैं कृत्रिम रूप से एक बना सकता हूं, लेकिन क्या इससे कोई फर्क पड़ता है? – Rich