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

SQL क्वेरी लिखने के लिए 9 सर्वोत्तम अभ्यास

यदि आप इस लेख को पढ़ रहे हैं, तो शायद, आप पहले से ही SQL से परिचित हैं। आप मूल SQL क्वेरी लिखना जानते हैं। आपके डेटाबेस पर वांछित परिणाम प्राप्त करने के लिए SQL क्वेरी को निष्पादित करने के कई तरीके हैं।

हालाँकि, सभी SQL क्वेरी समान नहीं बनाई गई हैं। अधिकांश को SQL क्वेरी सर्वोत्तम प्रथाओं का पालन करने के लिए अनुकूलित किया जा सकता है। यह आलेख 9 SQL क्वेरी अनुकूलन युक्तियों पर केंद्रित है। पढ़ने के बाद, आप SQL प्रश्नों को लिखने के लिए क्या करें और क्या न करें, के बारे में जानेंगे।

1. चयन तारांकन चिह्न (चयन *) के उपयोग से बचें

यह सबसे महत्वपूर्ण SQL सर्वोत्तम प्रथाओं में से एक है। चयन * क्वेरी तालिका के सभी स्तंभों से रिकॉर्ड लौटाती है। कुछ मामलों में मददगार होते हुए भी, यह क्वेरी अक्सर कई जटिलताएं पैदा करती है:

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

2. WHERE और HAVING क्लॉज का सटीक रूप से उपयोग करें

SQL में WHERE और HAVING क्लॉज़ की अलग-अलग कार्यक्षमताएँ हैं। इसलिए हमें इनका अलग-अलग इस्तेमाल करना चाहिए। WHERE और HAVING के तीन प्रमुख उपयोग के मामले नीचे दिए गए हैं:

  • सीआरयूडी प्रश्नों के साथ कहां इस्तेमाल किया जा सकता है यानी, चुनें, डालें, अपडेट करें, हटाएं। दूसरी ओर, आप HAVING का उपयोग केवल SELECT स्टेटमेंट के साथ कर सकते हैं।
  • GROUP BY जैसे किसी भी एग्रीगेशन ऑपरेशन से पहले डेटा को WHERE फ़िल्टर करता है। फिर इसे बिना किसी एग्रीगेशन फंक्शन के इस्तेमाल किया जा सकता है। HAVING का उपयोग एकत्रीकरण के बाद किया जाना चाहिए।
  • हम HAVING क्लॉज के साथ SUM, MIN, MAX COUNT जैसे एग्रीगेशन फ़ंक्शंस का उपयोग कर सकते हैं। WHERE क्लॉज के साथ, हम एग्रीगेशन फ़ंक्शंस का उपयोग नहीं कर सकते, जब तक कि यह क्लॉज़ HAVING क्लॉज़ में निहित सबक्वेरी का हिस्सा न हो।

3. तालिकाओं में शामिल होने के लिए WHERE क्लॉज के बजाय INNER JOIN Query का उपयोग करें

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

WHERE क्लॉज CROSS JOIN लौटाता है जो दोनों कॉलम में रिकॉर्ड का कार्टेशियन उत्पाद है। उदाहरण के लिए, यदि आपके पास तालिका A में 1,000 रिकॉर्ड हैं और तालिका B में समान संख्या में रिकॉर्ड हैं, तो WHERE क्लॉज 1,000 x 1,000 =1,000,000 रिकॉर्ड के साथ CROSS JOIN बनाएगा।

यदि WHERE क्लॉज में शामिल टेबल A और B के कॉलम में केवल 1,000 सामान्य मान हैं, तो WHERE क्लॉज कार्टेशियन उत्पाद द्वारा बनाए गए प्रारंभिक 1,000,000 रिकॉर्ड से 1,000 रिकॉर्ड लौटाएगा।

इनर जॉइन क्लॉज केवल 1,000 रिकॉर्ड देता है जहां दोनों टेबल ए और बी में कॉलम में सामान्य मान होते हैं। इस मामले में, INNER JOIN में WHERE क्लॉज की तुलना में 1,000x कम काम है।

कुछ डेटाबेस जॉइन क्वेरी में WHERE क्लॉज को दृश्य के पीछे INNER JOIN क्लॉज में बदल देते हैं। हालांकि, हमेशा यह अनुशंसा की जाती है कि आप SQL कोडिंग सर्वोत्तम प्रथाओं का पालन करने के लिए WHERE क्लॉज के बजाय स्पष्ट रूप से INNER JOIN का उपयोग करें।

4. IN और NOT IN के बजाय EXISTS, NOT EXISTS का उपयोग करें एसक्यूएल में

यदि आप किसी विशेष तालिका में किसी मान के अस्तित्व की पुष्टि करना चाहते हैं तो हमेशा IN खंड पर EXIST का उपयोग करें।

EXISTS क्लॉज को निष्पादित करने वाली प्रक्रिया जैसे ही तालिका में आवश्यक मान पाती है, रुक जाती है। दूसरी ओर, IN क्वेरी आवश्यक मान प्राप्त करने के बाद भी सभी को स्कैन करती है।

उसी तरह, जब आप उस मान की खोज करते हैं जो किसी तालिका में मौजूद नहीं है, तो आपको हमेशा NOT IN के बजाय NOT EXISTS का उपयोग करना चाहिए।

5. लाइक के बजाय बराबर ऑपरेटर (=) का उपयोग करें SQL में ऑपरेटर

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

यदि आपको दोनों के बीच चयन करना है, तो हमेशा बराबर ऑपरेटर ("=") को प्राथमिकता दें, क्योंकि यह अनुक्रमित कॉलम का उपयोग करता है। इसलिए, यह LIKE क्लॉज से तेज है।

6. खोज परिणामों को कम करने के लिए LIMIT क्लॉज का उपयोग करें

यदि आपको कई तालिकाओं या स्तंभों से डेटा वापस करना है, तो क्वेरी परिणामों को कम करने के लिए LIMIT क्लॉज (जिसे टॉप क्लॉज भी कहा जाता है) का उपयोग करें। यदि हजारों कॉलम हैं, या आप यह देखना चाहते हैं कि डेटा केवल आपकी तालिकाओं में कैसा दिखता है, तो सभी पंक्तियों को वापस करना आवश्यक नहीं है। इसके बजाय, इसके साथ संयोजन में LIMIT क्लॉज की मदद से SELECT क्वेरी द्वारा लौटाई गई पंक्तियों की संख्या को सीमित करें।

7. एकाधिक तालिकाओं को क्वेरी करते समय तालिका उपनामों का उपयोग करें

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

यदि आपके पास एकाधिक तालिकाओं में समान स्तंभ नाम हैं, तो आपको पहले से ही तालिका नामों/उपनामों का उपयोग करना होगा, इसलिए इससे आपका कार्यभार नहीं बढ़ेगा।

8. संग्रहीत कार्यविधियों को "sp_" के साथ उपसर्ग करने से बचें

यदि आपने संग्रहीत कार्यविधियों के साथ काम किया है, तो, सबसे अधिक संभावना है, आपने संग्रहीत कार्यविधि नाम को "sp_" के साथ उपसर्ग किया है। यह सबसे अच्छा नहीं है।

SQL सर्वर कहीं और खोजने के लिए आगे बढ़ने से पहले मास्टर डेटाबेस में उनके नाम की शुरुआत में "sp_" के साथ संग्रहीत कार्यविधियों की तलाश से शुरू होता है।

इसलिए, आप "sp_" के साथ संग्रहित प्रक्रियाओं को प्रीफ़िक्स न करके बहुत समय बचा सकते हैं, फिर, मास्टर डेटाबेस में संग्रहीत कार्यविधि का पता लगाने के बजाय, SQL सर्वर सीधे संग्रहीत कार्यविधि के स्वामी के रूप में dbo की जाँच करेगा।

9. अच्छी क्वेरी लेखन शैली अपनाएं

SQL क्वेरी लिखते समय अच्छी स्टाइलिंग प्रथाओं जैसे SQL प्रश्नों के लिए सर्वोत्तम प्रथाओं का पालन करना आवश्यक है। अपनी क्वेरी लिखने की शैली में सुधार के लिए नीचे दिए गए सुझावों पर ध्यान दें:

  • एसक्यूएल प्रश्नों में हमेशा टिप्पणियाँ जोड़ें। टिप्पणियाँ न केवल टीम के अन्य सदस्यों को आपके प्रश्नों को बेहतर ढंग से समझने में मदद करेंगी बल्कि आपको यह भी याद दिलाएंगी कि आप अतीत में स्वयं क्या कर रहे थे।
  • स्पष्ट नामकरण परंपराओं का प्रयोग करें। डेटाबेस, टेबल, कॉलम नाम, अस्थायी टेबल और अन्य चर नाम 100% पठनीय और स्पष्ट होने चाहिए।
  • जब भी संभव हो अपने प्रश्नों को इंडेंट करें। आंतरिक प्रश्नों को बाईं ओर से एक टैब इंडेंट किया जाना चाहिए। तालिका के अंदर कॉलम के नाम और प्रकार भी इंडेंट किए जाने चाहिए। इंडेंटेशन एक क्लीनर लुक सुनिश्चित करता है और क्वेरी की पठनीयता में सुधार करता है जो SQL सर्वर में क्वेरी के लिए सर्वोत्तम प्रथाओं में परिलक्षित होता है।

निष्कर्ष

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

यह भी पढ़ें

22 निफ्टी एसक्यूएल इंडेक्स उदाहरण आपकी क्वेरी को गति देने के लिए


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट डेटाबेस प्रश्नों को कम करने के लिए डेटाबेस कैशिंग का कोई रूप नहीं।

  2. SQL में एक स्ट्रिंग को अपरकेस में कैसे बदलें

  3. SAS JMP को Salesforce.com से जोड़ना

  4. टेबल एक्सप्रेशन के मूल तत्व, भाग 3 - व्युत्पन्न टेबल, अनुकूलन विचार

  5. मूवी थियेटर आरक्षण प्रणाली के लिए डेटाबेस मॉडल कैसे डिज़ाइन करें