MSSQL के साथ SQL क्वेरी प्रदर्शन को बढ़ावा दें। इस जानकारीपूर्ण मार्गदर्शिका में जानें कि दक्षता और गति के लिए अपने प्रश्नों को कैसे अनुकूलित करें।

गैर-अनुकूलित Microsoft SQL सर्वर (MSSQL) SQL क्वेरीज़ के परिणामस्वरूप घटिया प्रदर्शन, संसाधन का अति प्रयोग, असंगत डेटा, सुरक्षा खामियाँ और रखरखाव संबंधी कठिनाइयाँ हो सकती हैं। ये समस्याएँ आपके प्रोग्राम की कार्यक्षमता, निर्भरता और सुरक्षा को प्रभावित कर सकती हैं, जिससे उपयोगकर्ता निराश हो सकते हैं और आपको अधिक पैसे खर्च करने पड़ सकते हैं।

कुशल और त्वरित प्रदर्शन प्राप्त करने के लिए MSSQL में SQL क्वेरीज़ को अनुकूलित करना महत्वपूर्ण है। अनुक्रमण, क्वेरी सरलीकरण और भंडारण प्रक्रियाओं जैसी तकनीकों को लागू करके, उपयोगकर्ता ऐसा कर सकते हैं क्वेरी प्रदर्शन और डेटा संशोधन प्रदर्शन को संतुलित करें, अंततः समग्र डेटाबेस में सुधार करें प्रदर्शन।

अनुक्रमण के माध्यम से क्वेरी अनुकूलन

डेटाबेस अनुक्रमण खोज को तेज़ और अधिक कुशल बनाने के लिए डेटाबेस तालिकाओं में डेटा को व्यवस्थित और क्रमबद्ध करता है। अनुक्रमणन तालिकाओं में डेटा की प्रतियां बनाता है और उन्हें इस प्रकार क्रमबद्ध करता है डेटाबेस इंजन उन्हें आसानी से नेविगेट कर सकते हैं.

instagram viewer

क्वेरी निष्पादन पर, डेटाबेस इंजन आवश्यक डेटा खोजने के लिए इंडेक्स का उपयोग करता है और तुरंत परिणाम देता है, जिससे क्वेरी निष्पादन समय तेज हो जाता है। इंडेक्सिंग के बिना, डेटाबेस इंजन को आवश्यक डेटा ढूंढने के लिए तालिका में सभी पंक्तियों को स्कैन करना होगा, और यह समय और संसाधन-गहन हो सकता है, खासकर बड़ी तालिकाओं के लिए।

MSSQL में एक इंडेक्स बनाना

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

बनाएंअनुक्रमणिका अनुक्रमणिका_नाम
टेबल_नाम पर (कॉलम1, कॉलम2, ...);

उपरोक्त SQL कोड में, अनुक्रमणिका_नाम सूचकांक का नाम है, तालिका नाम तालिका का नाम है, और स्तम्भ 1, कॉलम 2, इत्यादि अनुक्रमित किए जाने वाले स्तंभों के नाम हैं।

यहां एक गैर-संकुलित सूचकांक बनाने का तरीका बताया गया है ग्राहकों टेबल का उपनाम SQL स्टेटमेंट वाला कॉलम।

बनाएं गैर-संकुलित अनुक्रमणिका IX_ग्राहक_अंतिमनाम
ग्राहकों पर (अंतिम नाम);

यह कथन एक गैर-संकुलित सूचकांक बनाता है जिसे कहा जाता है IX_ग्राहक_अंतिमनाम पर उपनाम का कॉलम ग्राहकों मेज़।

अनुक्रमण की लागत

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

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

क्वेरी सरलीकरण के माध्यम से क्वेरी अनुकूलन

डेटा विश्लेषण के लिए, डेटा निष्कर्षण के लिए जटिल प्रश्न उपयोगी होते हैं। हालाँकि, जटिल प्रश्नों का प्रदर्शन पर प्रभाव पड़ता है, और उनके परिणामस्वरूप अकुशल डेटा निष्कर्षण हो सकता है।

प्रश्नों को सरल बनाने में त्वरित, कम संसाधन-गहन प्रसंस्करण के लिए जटिल प्रश्नों को छोटे, सरल प्रश्नों में तोड़ना शामिल है।

क्वेरी सरलीकरण प्रदर्शन में सुधार करता है और जटिल प्रश्नों को सरल प्रश्नों में तोड़कर डेटा निष्कर्षण को आसान बनाता है क्योंकि जटिल प्रश्न सिस्टम में बाधाएं पैदा कर सकते हैं। उन्हें समझना कठिन है, जिससे डेवलपर्स और विश्लेषकों के लिए समस्याओं का निवारण करना या अनुकूलन के क्षेत्रों की पहचान करना कठिन हो गया है।

यहां एक उदाहरण जटिल क्वेरी है जो ग्राहक ऑर्डर की तालिका के लिए एमएसएसक्यूएल पर चलती है जहां लक्ष्य डेटा में रुझान और पैटर्न की पहचान करना है:

चुनना
ग्राहक का नाम,
COUNT(order_id) AS total_orders,
AVG(order_amount) AS औसत_order_amount,
SUM(ऑर्डर_राशि) कुल_बिक्री के रूप में
से
आदेश
कहाँ
'2022-01-01' और '2022-12-31' के बीच ऑर्डर_दिनांक
और order_status = 'पूर्ण'
द्वारा समूह बनाएं
ग्राहक का नाम
रखना
COUNT(order_id) > 5
द्वारा आदेश
कुल_बिक्री DESC;

क्वेरी 2022 में पूर्ण किए गए ऑर्डरों से ग्राहकों के नाम और बिक्री की जानकारी खोजती है, जबकि पांच से कम ऑर्डर वाले ग्राहकों को कुल बिक्री के आधार पर अवरोही क्रम में फ़िल्टर करती है।

क्वेरी मूल्यवान अंतर्दृष्टि प्रदान कर सकती है, लेकिन यह जटिल है और अंततः इसे संसाधित करने में अधिक समय लगेगा, खासकर यदि आदेश तालिका में कई प्रविष्टियाँ हैं.

आप क्वेरी को छोटे-छोटे प्रश्नों में तोड़कर, जो एक समय में एक को निष्पादित करते हैं, क्वेरी को सरल बना सकते हैं।

- ग्राहकों के नाम और उनके द्वारा दिए गए ऑर्डर की कुल संख्या की सूची प्राप्त करें
चुनना
ग्राहक का नाम,
COUNT(order_id) AS total_orders
से
आदेश
कहाँ
'2022-01-01' और '2022-12-31' के बीच ऑर्डर_दिनांक
और order_status = 'पूर्ण'
द्वारा समूह बनाएं
ग्राहक का नाम
रखना
COUNT(order_id) > 5;

- प्रत्येक ग्राहक के लिए औसत ऑर्डर राशि प्राप्त करें
चुनना
ग्राहक का नाम,
AVG(ऑर्डर_राशि) AS औसत_ऑर्डर_राशि
से
आदेश
कहाँ
'2022-01-01' और '2022-12-31' के बीच ऑर्डर_दिनांक
और order_status = 'पूर्ण'
द्वारा समूह बनाएं
ग्राहक का नाम
रखना
COUNT(order_id) > 5;

- प्रत्येक ग्राहक के लिए कुल बिक्री प्राप्त करें
चुनना
ग्राहक का नाम,
SUM(ऑर्डर_राशि) कुल_बिक्री के रूप में
से
आदेश
कहाँ
'2022-01-01' और '2022-12-31' के बीच ऑर्डर_दिनांक
और order_status = 'पूर्ण'
द्वारा समूह बनाएं
ग्राहक का नाम
रखना
COUNT(order_id) > 5
द्वारा आदेश
कुल_बिक्री DESC;

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

क्वेरी सरलीकरण के लिए युक्तियाँ

जब आप प्रश्नों को सरल बना रहे हैं, तो विशिष्ट कार्य के लिए अनुकूलित प्रश्न बनाने के लिए प्रति समय एक कार्य पर ध्यान केंद्रित करना आवश्यक है। एक कार्य पर ध्यान केंद्रित करने से प्रदर्शन को बेहतर बनाने में काफी मदद मिल सकती है।

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

संग्रहित प्रक्रियाओं के माध्यम से क्वेरी अनुकूलन

संग्रहित प्रक्रियाएं डेटाबेस में संग्रहीत पूर्व-लिखित SQL कथनों के सेट हैं। आप डेटाबेस से डेटा को अपडेट करने से लेकर डालने या पुनर्प्राप्त करने तक, विभिन्न ऑपरेशन करने के लिए संग्रहीत प्रक्रियाओं का उपयोग कर सकते हैं। संग्रहीत प्रक्रियाएँ पैरामीटर स्वीकार कर सकती हैं। आप उन्हें विभिन्न प्रोग्रामिंग भाषाओं से कॉल कर सकते हैं, जिससे वे एप्लिकेशन विकास के लिए एक शक्तिशाली उपकरण बन जाएंगे।

यहां MSSQL के लिए एक संग्रहीत प्रक्रिया बनाने का एक उदाहरण दिया गया है जो किसी विभाग में कर्मचारियों का औसत वेतन लौटाता है:

बनाएंप्रक्रिया [डीबीओ].[औसत वेतन प्राप्त करें]
@विभाग का नाम VARCHAR(50)
जैसा
शुरू
चुननाऔसत(वेतन) जैसा औसत वेतन
कर्मचारियों से
जहां विभाग = @विभाग का नाम
अंत

संग्रहीत प्रक्रिया में, आपने एक पैरामीटर परिभाषित किया है जिसे कहा जाता है @विभाग का नाम और प्रयोग किया कहाँ विभाग द्वारा परिणामों को फ़िल्टर करने के लिए खंड। आपने भी प्रयोग किया औसत विभाग में कर्मचारियों के औसत वेतन की गणना करने का कार्य।

आप MSSQL में संग्रहीत प्रक्रियाओं को निष्पादित कर सकते हैं कार्यकारी कथन।

यहां बताया गया है कि आप उपरोक्त संग्रहीत प्रक्रिया को कैसे निष्पादित कर सकते हैं:

EXEC [dbo].[GetAverageSalary] @DepartmentName = 'बिक्री'

संग्रहीत प्रक्रिया निष्पादन विवरण में, आप पास करते हैं बिक्री विभाग के नाम के रूप में मान. विवरण बिक्री विभाग में औसत कर्मचारी वेतन लौटाएगा।

संग्रहित प्रक्रियाएँ क्वेरी प्रदर्शन को कैसे सुधारती हैं?

संग्रहीत प्रक्रियाएँ क्वेरी प्रदर्शन में उल्लेखनीय सुधार कर सकती हैं। सबसे पहले, संग्रहीत प्रक्रियाएँ डेटा स्थानांतरित करने के बजाय सर्वर साइड पर SQL स्टेटमेंट निष्पादित करके नेटवर्क ट्रैफ़िक को कम करती हैं क्लाइंट और सर्वर के बीच आगे और पीछे, जिससे नेटवर्क पर भेजे गए डेटा की मात्रा कम हो जाती है और क्वेरी प्रतिक्रिया कम हो जाती है समय।

दूसरे, आप संग्रहीत कैशिंग प्रक्रियाओं को संकलित कर सकते हैं, जिसका अर्थ है निष्पादन योजना को मेमोरी में संग्रहीत करना। जब आप संग्रहीत प्रक्रिया को कॉल करते हैं, तो सर्वर पुन: संकलित करने के बजाय निष्पादन योजना को मेमोरी से पुनर्प्राप्त करता है SQL कथन, जिससे संग्रहीत प्रक्रिया के लिए निष्पादन समय कम हो जाता है और क्वेरी में सुधार होता है प्रदर्शन।

आप उबंटू पर एमएसएसक्यूएल सेट अप कर सकते हैं

एमएसएसक्यूएल ने उबंटू और अन्य लिनक्स वितरणों का समर्थन करने में महत्वपूर्ण प्रगति की है। माइक्रोसॉफ्ट ने उद्यम में लिनक्स की बढ़ती लोकप्रियता को पहचाना और अपने प्रमुख डेटाबेस सर्वर की उपलब्धता को लिनक्स प्लेटफार्मों तक बढ़ाने का निर्णय लिया।