ठीक है, मुझे आपकी दुविधा दिखाई दे रही है, और (संभवतः अल्पकालिक) डेटाबेस विशेषज्ञ की अनुपस्थिति में मैं आपको अपनी राय दूंगा।
विवेक के लिए अपने डेटा को तोड़ दें। मान लें कि आप लोगों पर जानकारी संग्रहीत कर रहे हैं। आपको 1 टेबल में 200 कॉलम की जरूरत नहीं है। आपको उन्हें विभाजित करना चाहिए और बहुत सारी तालिकाओं में कई कॉलम होने चाहिए। उदा.
tblGeneralCharacteristics:
- colEyeColor
- colHairColor
- colHeight
- colWeight
tblInterests:
- colFaveColor
- colFaveSport
tblRelationships
- colMother
- colFather
- colBrother
- colSister
यह तरीका काफी बेहतर है। कम्प्यूटेशनल रूप से मुझे संदेह है कि यह बहुत मायने रखता है। स्पष्ट रूप से प्रत्येक क्वेरी के साथ आपको कम डेटा वापस मिल रहा है, इसलिए कुछ रिपोर्टों के लिए (जहां आपको सभी डेटा प्राप्त करने की आवश्यकता नहीं हो सकती है, या सभी डेटा के माध्यम से ट्रॉल करना पड़ सकता है) यह तेज़ हो सकता है (हालांकि यदि आप डेटाबेस को ठीक से अनुक्रमित करते हैं तो इसे चाहिए कोई समस्या नहीं है)।
अगले अंक पर। वह डेटाबेस में रिकॉर्ड की मात्रा का। अगर 10,000 थोड़ा बड़ा होना शुरू हो रहा है, तो कैशिंग शुरू करने का समय आ गया है।
अब, जहां तक मेरा संबंध है, डेटा को कैश करने का कोई सही या गलत तरीका नहीं है। आपको जो चाहिए वह आपको चाहिए। तो उदाहरण के लिए, आपके प्रश्न में आपने जनवरी और मार्च 2012 के बीच रिकॉर्ड इनपुट के लिए वजन के लिए औसत ऊंचाई प्राप्त करने का उल्लेख किया है। ठीक है ... आप एक क्रॉन स्क्रिप्ट लिख सकते हैं जो उस महीने के सभी रिकॉर्ड इनपुट के लिए वजन के लिए औसत ऊंचाई की गणना करता है और इसे स्टोर करता है कहीं अलग टेबल में। फिर जब आप अपनी रिपोर्ट बनाने के लिए आते हैं, तो आपको केवल जनवरी, फरवरी और मार्च के मान प्राप्त करने और उन्हें औसत करने की आवश्यकता होती है... यह बहुत आसान है। संभावित रूप से हजारों पंक्तियों पर एक कम्प्यूटेशनल क्वेरी करने के बजाय, आप दो सौ पंक्तियों पर एक क्रॉन क्वेरी कर रहे हैं (इससे कोई फर्क नहीं पड़ता कि इसमें कितना समय लगता है), और फिर वास्तविक रिपोर्ट केवल 3 पंक्तियों पर सवाल उठाती है।
एक और चाल है, एसक्यूएल में आप जितनी अधिक गणना कर सकते हैं उतना बेहतर है। यदि आप औसत फ़ील्ड/रिकॉर्ड करना चाहते हैं, या कुछ कुल करना चाहते हैं तो इसे अपनी SQL क्वेरी के साथ भेजें। SQL सर्वर आपको बड़ी मात्रा में डेटा को छानने के लिए वापस करने के बजाय गणना करेगा और परिणाम लौटाएगा। मुझे पता है कि यह हमेशा आसान/उपयोगी नहीं होता है, लेकिन जितना अधिक आप SQL को बेहतर करने के लिए प्राप्त कर सकते हैं।
उम्मीद है ये मदद करेगा। जैसा कि मैंने कहा कि मुझे यकीन है कि एक डेटाबेस विशेषज्ञ आपको कुछ और व्यावहारिक सलाह देने के लिए उत्सुक है। :)पी>