स्कीमा डिजाइन करने से पहले अपनी आवश्यकताओं को समझें (यदि संभव हो तो)।
डेटा के बारे में जानें, 1) अनुक्रमण 2) उपयोग किए गए भंडारण का प्रकार, 3) विक्रेता इंजन या सुविधाएँ; यानी ... कैशिंग, इन-मेमोरी क्षमता 4) डेटाटाइप्स 5) टेबल का आकार 6) क्वेरी की आवृत्ति 7) संबंधित वर्कलोड यदि संसाधन साझा किया गया है तो 8) टेस्ट
A) आवश्यकताएँ अलग-अलग होंगी। यदि हार्डवेयर अपेक्षित कार्यभार का समर्थन नहीं कर सकता है, तो आपको कार्य-भार में आवश्यकताओं को प्रदान करने के तरीके का पुनर्मूल्यांकन करना चाहिए। तालिका के अतिरिक्त स्तंभ के संबंध में। यदि डेटाबेस विचारों का समर्थन करता है, तो आप विशिष्ट नामांकित कॉलम (बनाम '' * ') के साथ विशिष्ट डेटा का एक अनुक्रमित (?) दृश्य बना सकते हैं। समय-समय पर अपने डेटा और स्कीमा की समीक्षा करें ताकि यह सुनिश्चित हो सके कि आप "कचरा-इन" -> "कचरा-बाहर" सिंड्रोम में कभी न चलें।
यह मानते हुए कि कोई अन्य समाधान नहीं है; आप निम्नलिखित को ध्यान में रख सकते हैं। किसी समस्या के हमेशा कई समाधान होते हैं।
1) अनुक्रमण: चयन * एक मेज़बान को निष्पादित करेगा। विभिन्न कारकों के आधार पर, इसमें अन्य प्रश्नों के साथ डिस्क की तलाश और / या विवाद शामिल हो सकता है। यदि तालिका बहुउद्देश्यीय है, तो सुनिश्चित करें कि सभी प्रश्न निष्पादन योग्य हैं और नीचे दिए गए लक्ष्य समय पर अमल करें। यदि बड़ी मात्रा में डेटा है, और आपका नेटवर्क या अन्य संसाधन ट्यून नहीं किया गया है; आपको इसे ध्यान में रखना होगा। डेटाबेस एक साझा वातावरण है।
2) भंडारण का प्रकार। Ie: यदि आप SSD's, डिस्क, या मेमोरी का उपयोग कर रहे हैं। I / O बार और सिस्टम / सीपीयू पर भार अलग-अलग होगा।
3) क्या DBA उच्च प्रदर्शन के लिए डेटाबेस / तालिकाओं को ट्यून कर सकता है? जो भी कारण के लिए मानते हुए, टीमों ने चयन का फैसला किया है '*' समस्या का सबसे अच्छा समाधान है; क्या DB या तालिका को मेमोरी में लोड किया जा सकता है। (या अन्य विधि ... शायद प्रतिक्रिया 2-3 सेकंड की देरी के साथ जवाब देने के लिए डिज़ाइन की गई थी? --- जबकि एक विज्ञापन कंपनी के राजस्व कमाने के लिए खेलता है।)
4) बेसलाइन पर शुरू करें। अपने डेटा प्रकारों को समझें, और परिणाम कैसे प्रस्तुत किए जाएंगे। छोटे डेटाैटिप्स, फ़ील्ड की संख्या परिणाम सेट में दिए गए डेटा की मात्रा को कम कर देती है। यह अन्य प्रणालियों की जरूरतों के लिए उपलब्ध संसाधनों को छोड़ देता है। सिस्टम संसाधनों की आमतौर पर एक सीमा होती है; स्थिरता, और अनुमानित व्यवहार सुनिश्चित करने के लिए इन सीमाओं के नीचे 'हमेशा' काम करते हैं।
5) तालिका / डेटा का आकार। छोटे टेबल के साथ '*' का चयन आम है। वे आम तौर पर स्मृति में फिट होते हैं, और प्रतिक्रिया समय त्वरित होता है। फिर से .... अपनी आवश्यकताओं की समीक्षा करें। फ़ीचर रेंगने की योजना; हमेशा वर्तमान और संभव भविष्य की जरूरतों के लिए योजना बनाएं।
6) क्वेरी / प्रश्नों की आवृत्ति। सिस्टम पर अन्य कार्यभार से अवगत रहें। यदि यह क्वेरी हर सेकंड बंद हो जाती है, और तालिका छोटी है। परिणाम सेट को कैश / मेमोरी में बने रहने के लिए डिज़ाइन किया जा सकता है। हालाँकि, यदि क्वेरी डेटा के गीगाबाइट्स / टेराबाइट्स के साथ एक लगातार बैच प्रक्रिया है ... आप यह सुनिश्चित करने के लिए अतिरिक्त संसाधन समर्पित करने के लिए बेहतर हो सकते हैं कि अन्य कार्यभार प्रभावित न हों।
7) संबंधित कार्यभार। समझें कि संसाधनों का उपयोग कैसे किया जाता है। क्या नेटवर्क / सिस्टम / डेटाबेस / टेबल / एप्लिकेशन समर्पित है, या साझा किया गया है? हितधारक कौन हैं? क्या यह उत्पादन, विकास या QA के लिए है? क्या यह एक अस्थायी "त्वरित सुधार" है। क्या आपने परिदृश्य का परीक्षण किया है? आपको आश्चर्य होगा कि वर्तमान हार्डवेयर पर आज कितनी समस्याएं हो सकती हैं। (हां, प्रदर्शन तेज है ... लेकिन डिजाइन / प्रदर्शन अभी भी नीचा है।) क्या सिस्टम को प्रति सेकंड 10K प्रश्नों को प्रति सेकंड 5-10 प्रश्नों के प्रदर्शन की आवश्यकता है। डेटाबेस सर्वर समर्पित है, या अन्य अनुप्रयोगों को करते हैं, निगरानी साझा संसाधन पर निष्पादित करते हैं। कुछ एप्लिकेशन / भाषाएं; विभिन्न लक्षणों / समस्याओं के कारण O / S स्मृति की 100% खपत करेगा।
8) टेस्ट: अपने सिद्धांतों का परीक्षण करें, और जितना संभव हो उतना समझें। आपका चयन '*' समस्या एक बड़ी बात हो सकती है, या यह कुछ ऐसा हो सकता है जिसके बारे में आपको चिंता करने की आवश्यकता नहीं है।
SELECT COUNT(*)
बुरा होना अविश्वसनीय रूप से पुराना और पुराना है । जानकारी के लिएSELECT *
- देखें: stackoverflow.com/questions/1960036/…