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

बेहतर डेटाबेस मॉनिटरिंग के लिए 5 SQL सिंटैक्स और क्वेरी सिद्धांत

अच्छे SQL सिंटैक्स और क्वेरी-लेखन प्रथाओं को अपनाने से आपके डेटाबेस की निगरानी क्षमता में सुधार होगा और परिणामस्वरूप, आपके समग्र डेटाबेस प्रदर्शन में सुधार होगा। सिंटैक्स और क्वेरी समायोजन के माध्यम से डेटाबेस के प्रदर्शन को बेहतर बनाने के कई आजमाए हुए और सही तरीके हैं। हमने फोकस करने के लिए 5 को चुना।

1. केस एक्सप्रेशन

CASE अभिव्यक्तियों से सर्वश्रेष्ठ प्रदर्शन प्राप्त करने के लिए यहां कुछ सर्वोत्तम अभ्यास दिए गए हैं:

  • केस एक्सप्रेशन पुराने प्रक्रियात्मक कोड को घोषणात्मक कोड में ले जाकर प्रदर्शन में सुधार करता है जिसे तब अनुकूलित किया जा सकता है। बुनियादी CASE अभिव्यक्तियों के लिए, <सरल केस> का उपयोग करें, जो कि सबसे आसानी से अनुकूलित है। विस्तारित CASE अभिव्यक्तियों के लिए, हैशिंग और अन्य तकनीकें सबसे उपयोगी होंगी।
  • चूंकि जब क्लाज का परीक्षण बाएं से दाएं किया जाता है, तो अपने क्लॉज को व्यवस्थित करना सबसे अच्छा होता है ताकि सबसे अधिक संभावना वाले क्लॉज को पहले सूचीबद्ध किया जा सके। इससे अनावश्यक स्कैनिंग में लगने वाले समय में कमी आएगी।
  • अधिकांश अनुकूलक निष्पादन के क्रम पर विचार करके निरर्थक परीक्षणों को भी कारक बनाते हैं। जैसे ही WHEN क्लॉज निष्पादित होता है, उस क्लॉज को दोबारा जांचने की कोई जरूरत नहीं है। हालांकि, कई अनुकूलक नेस्टेड CASE अभिव्यक्तियों को पढ़ने में अच्छे नहीं हैं, इसलिए उन्हें एक स्तर पर समतल करना सबसे अच्छा है।

2. डबल-डिपिंग और विंडो क्लॉज

SQL में, "डबल-डिपिंग" का अर्थ है एक ही टेबल पर एक से अधिक बार जाना, जो आपकी क्वेरी को धीमा कर देता है। आदर्श रूप से, अपने सभी काम एक ही टेबल विज़िट में करने का प्रयास करें। लेकिन अगर यह संभव नहीं है, तो प्रदर्शन पर प्रभाव को कम करने के कुछ तरीके हैं।

एक ही आधार तालिका से निर्मित अस्थायी तालिकाओं का उपयोग करना वास्तव में डबल-डिपिंग से बचने का सबसे अच्छा तरीका नहीं है। एक बेहतर उपाय यह है कि अपने SQL इंजन के अनुकूलक का उपयोग करके दृश्य प्रदर्शित करें और परिणामों को एक कार्यशील तालिका के रूप में साझा करें।

यदि आप तारकीय अनुकूलक से कम तक सीमित हैं, तो अस्थायी तालिकाओं का उपयोग करें और मैन्युअल रूप से कार्य करें।

हालांकि उपरोक्त विधियां पूरी तरह से स्वीकार्य हैं, डबल-डिपिंग से बचने का सबसे अच्छा तरीका विंडो क्लॉज का उपयोग करना है क्योंकि सबक्वायरी सबक्वायरी सुविधाओं के समान ही काम करते हैं। उदाहरण के लिए:

  • PARTITION BY खंड एक स्थानीय GROUP BY की तरह है जो तालिका को समूहों में विभाजित करता है।
  • ORDER BY क्लॉज एक क्रमबद्ध क्रम लगाता है।
  • विंडो फ्रेम (ROW या RANGE) एक स्थानीय WHERE क्लॉज की तरह है।

आप इन नियमों का पालन करके विंडो फ़ंक्शन को ऑप्टिमाइज़ कर सकते हैं:

  • इंडेक्स में, पहले पार्टिशन बाय क्लॉज के कॉलम को सॉर्ट करें, फिर ऑर्डर बाय क्लॉज में इस्तेमाल किए गए कॉलम पर।
  • क्वेरी में संदर्भित कोई अन्य कॉलम इंडेक्स के कॉलम के रूप में शामिल करें।

3. संग्रहित प्रक्रियाओं का उपयोग करें

ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम) अपने स्वयं के कोड उत्पन्न करते समय कई प्रदर्शन समस्याओं का कारण बनते हैं। यदि आपको ओआरएम का उपयोग करना है, तो अपनी खुद की संग्रहित प्रक्रियाएं लिखें ताकि प्रदर्शन प्रभावित न हो।

संग्रहीत कार्यविधियों का उपयोग करने से प्रदर्शन में सुधार करने के कई तरीके हैं, जिनमें शामिल हैं:

  • वे पूरे नेटवर्क में कम डेटा भेजते हैं, इसलिए लेन-देन तेज होता है
  • वे छोटी कॉल सक्षम करते हैं
  • प्रोफ़ाइल टूल में संग्रहीत कार्यविधियों का पता लगाना आसान है
  • चूंकि संग्रहीत कार्यविधि आपके डेटाबेस में एक वास्तविक वस्तु है, इसलिए प्रदर्शन आंकड़े प्राप्त करना आसान होता है, जिससे प्रदर्शन समस्याओं को ढूंढना आसान हो जाता है
  • निष्पादन योजना पुन:उपयोग बढ़ जाती है
  • वे किनारे के मामलों से निपटना आसान बनाते हैं और ऑडिटिंग या परिवर्तन-लॉकिंग व्यवहार जोड़ते हैं
  • संग्रहीत प्रक्रियाएं SQL इंजेक्शन हमलों के लिए असुरक्षित नहीं हैं

4. बैचों में हटाएं और अपडेट करें

बड़े टेबल स्कैन से बहुत सारे डेटा को हटाना या अपडेट करना बहुत सारे संसाधनों का उपयोग करता है क्योंकि दोनों कथन एक ही लेनदेन के रूप में चलते हैं। यह एक प्रदर्शन हत्यारा है क्योंकि यदि लेन-देन के दौरान कोई त्रुटि होती है और आपको इसे रोकने की आवश्यकता होती है, तो सिस्टम को पूरे लेनदेन को वापस लेना होगा। बड़ी मात्रा में डेटा को वापस रोल करने में बहुत समय लगता है और अन्य लेनदेन अवरुद्ध हो जाते हैं।

आप छोटे बैचों में अपडेट और डिलीट करके इस प्रदर्शन समस्या से बच सकते हैं। जब आप इन लेन-देन को बैचों में चलाते हैं, यदि लेन-देन समाप्त हो जाता है, तो रोलबैक बहुत छोटा होता है। डेटा की एक छोटी मात्रा को वापस रोल करने में बहुत अधिक समय नहीं लगता है, और बैच डिस्क के लिए प्रतिबद्ध होने पर अन्य लेनदेन काम कर सकते हैं।

5. अपनी आवश्यकता से अधिक कॉलम प्राप्त न करें

खराब प्रदर्शन करने वाली क्वेरी के प्रमुख कारणों में से एक बाहरी कॉलम पुनर्प्राप्त करना है। उन प्रथाओं से बचें जो आमतौर पर अत्यधिक संख्या में कॉलम लौटाती हैं। निम्नलिखित बातों का ध्यान रखें:

  • किसी क्वेरी में "SELECT *" का अनावश्यक उपयोग करने से आपकी आवश्यकता से अधिक कॉलम मिलने की संभावना है। यह संसाधनों की बर्बादी है और अन्य उपयोगकर्ताओं से संसाधनों को लॉक करता है। यह विशेष रूप से महत्वपूर्ण है कि कॉलमर SQL डेटाबेस में अंधाधुंध रूप से "SELECT *" का उपयोग न करें।
  • कोड का पुन:उपयोग करने के लिए कट-एंड-पेस्ट करने से बाहरी कॉलम बन सकते हैं।
  • जब आप किसी दृश्य का आह्वान करते हैं, तो आपके पास नेस्टेड कॉलम हो सकते हैं। खराब प्रदर्शन करने वाली क्वेरीज़ को अन-नेस्ट करके देखें कि कौन से कॉलम हैं और उन बड़े आकार के कॉलम से छुटकारा पाएं जिनकी आपको आवश्यकता नहीं है। एक अच्छा संकेत है कि आपको समस्या है कि आपके पास अतिरिक्त शर्तों के साथ WHERE क्लॉज़ और अतिरिक्त बाहरी जॉइन के साथ FROM क्लॉज़ है।

SQL सिंटैक्स और क्वेरी-लेखन के लिए एक ईमानदार दृष्टिकोण लेने के ये कुछ तरीके हैं जो डेटाबेस निगरानी में सुधार कर सकते हैं। कुछ और कोशिश करने से डरो मत। प्रत्येक संगठन में व्यावसायिक लक्ष्यों को पूरा करने के लिए एक उच्च प्रदर्शन वाला डेटाबेस महत्वपूर्ण है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONCAT () के साथ SQL सर्वर में स्ट्रिंग्स को कैसे संयोजित करें

  2. SQL सर्वर में कैस्केडिंग का उपयोग कब/क्यों करें?

  3. SQL सर्वर में निहित लेनदेन कैसे काम करते हैं

  4. SQL सर्वर डेटाबेस में पहचान वृद्धि बढ़ रही है

  5. चुनिंदा बयान में यूटीसी से स्थानीय समय में डेटाटाइम कॉलम कनवर्ट करें