PostgreSQL प्रदर्शन और क्वेरी अनुकूलन · पाठ

एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन

जटिल एग्रीगेशन और विंडो फ़ंक्शन को कुशलता से संसाधित करने की तकनीकें सीखें।

पाठ 1, कुल 4 में से11 चरण

एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन, CoddyKit पर PostgreSQL प्रदर्शन और क्वेरी अनुकूलन का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह PostgreSQL प्रदर्शन और क्वेरी अनुकूलन सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एग्रीगेट और विंडो का परिचय

उन्नत क्वेरी को बेहतर बनाने के पाठ में आपका स्वागत है! आज हम एग्रीगेट और विंडो फ़ंक्शन को तेज़ी से चलाने का तरीका सीखेंगे।

SQL की ये शक्तिशाली सुविधाएँ आपको पंक्तियों के समूहों या संबंधित पंक्तियों पर गणनाएँ करने देती हैं। लेकिन सावधानी न बरतने पर ये प्रदर्शन में बाधा बन सकती हैं।

एग्रीगेट का पुनरावलोकन

एग्रीगेट फ़ंक्शन पंक्तियों के समूह के डेटा का सारांश बनाते हैं और प्रत्येक समूह के लिए एक मान लौटाते हैं। सामान्य फ़ंक्शन में COUNT(), SUM(), AVG(), MIN(), और MAX() शामिल हैं।

ये समूह निर्धारित करने के लिए अक्सर GROUP BY क्लॉज़ के साथ काम करते हैं। आइए एक सरल उदाहरण देखें:

SELECT
  category,
  COUNT(product_id) AS total_products
FROM
  products
GROUP BY
  category;

विंडो फ़ंक्शन का अवलोकन

विंडो फ़ंक्शन भी तालिका की पंक्तियों के एक समूह पर गणनाएँ करते हैं। हालांकि, एग्रीगेट के विपरीत, ये पंक्तियों को समेटते नहीं हैं। इसके बजाय, ये मूल क्वेरी की प्रत्येक पंक्ति के लिए एक परिणाम लौटाते हैं।

गणना के लिए पंक्तियों की ‘विंडो’ निर्धारित करने हेतु ये OVER() क्लॉज़ का उपयोग करते हैं। इस विंडो को विभाजित और क्रमबद्ध किया जा सकता है।

एग्रीगेट को बेहतर बनाना: शुरुआती फ़िल्टरिंग

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

इस उदाहरण पर विचार करें, जिसमें हम केवल ‘Electronics’ के लिए एग्रीगेट करते हैं:

SELECT
  category,
  AVG(price) AS avg_price
FROM
  products
WHERE
  category = 'Electronics'
GROUP BY
  category;

एग्रीगेट को बेहतर बनाना: GROUP BY के लिए इंडेक्स

इंडेक्स GROUP BY क्लॉज़ को काफ़ी तेज़ कर सकते हैं। यदि GROUP BY में उपयोग किए गए कॉलम पर इंडेक्स मौजूद है, तो PostgreSQL अक्सर पूरे डेटासेट को क्रमबद्ध करने से बचने के लिए उसका उपयोग कर सकता है।

यह विशेष रूप से बी-ट्री इंडेक्स के लिए सही है, जो डेटा को क्रमबद्ध क्रम में संग्रहीत करते हैं।

CREATE INDEX idx_products_category
ON products (category);

विंडो फ़ंक्शन: PARTITION BY

OVER() के भीतर PARTITION BY क्लॉज़ आपके डेटासेट को स्वतंत्र समूहों में विभाजित करता है और विंडो फ़ंक्शन प्रत्येक विभाजन में अलग-अलग काम करता है। इसे GROUP BY जैसा समझें, लेकिन इसमें पंक्तियाँ समेटी नहीं जातीं।

प्रदर्शन की दृष्टि से, विभाजन में अक्सर विभाजन कुंजी के अनुसार डेटा को क्रमबद्ध करना पड़ता है, जो बड़े डेटासेट के लिए बहुत अधिक संसाधन ले सकता है।

SELECT
  product_name,
  category,
  price,
  AVG(price) OVER (PARTITION BY category) AS avg_category_price
FROM
  products;

विंडो फ़ंक्शन: विंडो में ORDER BY

OVER() के अंदर का ORDER BY क्लॉज़ प्रत्येक विभाजन के भीतर पंक्तियों का तार्किक क्रम निर्धारित करता है। रैंकिंग फ़ंक्शन (जैसे ROW_NUMBER()) और पंक्ति क्रम पर निर्भर फ़ंक्शन (जैसे LAG(), LEAD()) के लिए यह अत्यंत महत्वपूर्ण है।

एग्रीगेट की तरह, क्रमबद्ध करने का यह चरण महँगा हो सकता है, विशेषकर तब जब क्रमबद्ध क्रम के लिए उपयुक्त इंडेक्स उपलब्ध न हो।

SELECT
  product_name,
  category,
  price,
  ROW_NUMBER() OVER (PARTITION BY category ORDER BY price DESC) AS rank_in_category
FROM
  products;

विंडो फ़्रेम: ROWS और RANGE

PARTITION BY और ORDER BY के अलावा, आप ROWS या RANGE का उपयोग करके एक विशिष्ट विंडो फ़्रेम निर्धारित कर सकते हैं। इससे यह निर्दिष्ट होता है कि वर्तमान विभाजन के भीतर पंक्तियों के किस उपसमूह पर फ़ंक्शन को विचार करना चाहिए।

  • ROWS: वर्तमान पंक्ति के सापेक्ष निश्चित संख्या में पंक्तियों पर आधारित।
  • RANGE: वर्तमान पंक्ति के मान के सापेक्ष मानों की सीमा पर आधारित।

छोटे और अधिक सटीक विंडो फ़्रेम (जैसे, ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) का उपयोग करने से अक्सर बड़े, असीमित फ़्रेम की तुलना में बेहतर प्रदर्शन मिलता है।

SELECT
  sale_date,
  amount,
  SUM(amount) OVER (
    ORDER BY sale_date
    ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
  ) AS three_day_moving_avg
FROM
  sales;

सामान्य अनुकूलन युक्तियाँ

एग्रीगेट और विंडो फ़ंक्शन, दोनों के लिए कुछ सामान्य युक्तियाँ यहाँ दी गई हैं:

  • उपयुक्त इंडेक्स का उपयोग करें: विशेष रूप से GROUP BY, PARTITION BY, और ORDER BY कॉलम पर।
  • डेटा की मात्रा कम करें: WHERE क्लॉज़ से जल्दी फ़िल्टर करें।
  • जटिल एक्सप्रेशन से बचें: एग्रीगेट या विंडो के भीतर की गणनाएँ धीमी हो सकती हैं। संभव हो तो पहले से गणना कर लें।
  • डेटा वितरण को समझें: असंतुलित डेटा से काम का असमान वितरण और विभाजन धीमे हो सकते हैं।

त्वरित जाँच: एग्रीगेट को बेहतर बनाना

आपके पास एक बड़ी orders तालिका है और आप प्रत्येक ग्राहक के लिए ‘2023-01’ में किए गए ऑर्डर की कुल राशि निकालना चाहते हैं। सामान्यतः कौन-सा तरीका अधिक बेहतर प्रदर्शन देगा?

पुनरावलोकन और अगले चरण

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

  • एग्रीगेट के लिए डेटा को जल्दी फ़िल्टर करें।
  • GROUP BY, PARTITION BY, और ORDER BY कॉलम पर इंडेक्स का उपयोग करें।
  • एग्रीगेट और विंडो फ़ंक्शन, दोनों के लिए क्रमबद्ध करने की लागत का ध्यान रखें।
  • जहाँ संभव हो, ROWS/RANGE से सटीक विंडो फ़्रेम निर्धारित करें।

तेज़ और अधिक कुशल PostgreSQL क्वेरी लिखने के लिए इन तकनीकों को ध्यान में रखें!

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
88

अक्सर पूछे जाने वाले प्रश्न

क्या “एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन” पाठ निःशुल्क है?

हाँ — PostgreSQL प्रदर्शन और क्वेरी अनुकूलन अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन” में मैं क्या सीखूँगा?

जटिल एग्रीगेशन और विंडो फ़ंक्शन को कुशलता से संसाधित करने की तकनीकें सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PostgreSQL प्रदर्शन और क्वेरी अनुकूलन का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PostgreSQL प्रदर्शन और क्वेरी अनुकूलन शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PostgreSQL प्रदर्शन और क्वेरी अनुकूलन शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ में कोड लिख और चला सकता हूँ?

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

इस पाठ्यक्रम के सभी पाठ

  1. एग्रीगेट और विंडो फ़ंक्शन का अनुकूलन
  2. रिकर्सिव CTE और ग्राफ़ क्वेरी
  3. प्रदर्शन के लिए मैटेरियलाइज़्ड व्यू का उपयोग
  4. FILTER और conditional aggregation से query को अनुकूलित करना
← PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पर वापस जाएँ