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

FILTER और conditional aggregation से query को अनुकूलित करना

जानें कि FILTER clause और CASE-आधारित conditional aggregation कई अलग query चलाने के बजाय एक ही table pass में कई metric निकालने देते हैं।

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

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

समस्या: कई गणनाएँ, एक तालिका

डैशबोर्ड को अक्सर एक ही तालिका से कई मेट्रिक चाहिए होते हैं — कुल ऑर्डर, भुगतान किए गए ऑर्डर और वापस किए गए ऑर्डर। तीन अलग-अलग क्वेरी चलाने पर तालिका तीन बार स्कैन होती है। हम यह काम एक ही पास में कर सकते हैं।

CASE के साथ सशर्त एग्रीगेशन

सामान्य युक्ति यह है कि किसी एग्रीगेट के अंदर CASE रखा जाए। जो पंक्तियाँ मेल नहीं खातीं, वे NULL का योगदान देती हैं, जिसे COUNT और SUM अनदेखा करते हैं।

SELECT
  COUNT(*) AS total,
  COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid
FROM orders;

अधिक साफ़ FILTER क्लॉज़

PostgreSQL एक अधिक पठनीय रूप प्रदान करता है: किसी भी समुच्चय फ़ंक्शन से जुड़ा FILTER खंड। यह उद्देश्य को सीधे व्यक्त करता है।

SELECT
  COUNT(*) AS total,
  COUNT(*) FILTER (WHERE status = 'paid')     AS paid,
  COUNT(*) FILTER (WHERE status = 'refunded') AS refunded
FROM orders;

यह तेज़ क्यों है

सभी मेट्रिक्स की गणना तालिका के एक ही स्कैन में हो जाती है। योजनाकार हर पंक्ति को एक बार पढ़कर प्रत्येक समुच्चय को अपडेट करता है, बजाय इसके कि हर मेट्रिक के लिए तालिका को अलग-अलग स्कैन करे।

SUM और AVG के साथ FILTER

FILTER केवल COUNT के साथ ही नहीं, बल्कि किसी भी समुच्चय फ़ंक्शन के साथ काम करता है। उसी क्वेरी में शर्त-आधारित योग और औसत की गणना करें।

SELECT
  SUM(total) FILTER (WHERE status = 'paid') AS revenue,
  AVG(total) FILTER (WHERE status = 'paid') AS avg_paid
FROM orders;

GROUP BY के साथ संयोजन

समूहीकृत क्वेरी के भीतर FILTER विशेष रूप से उपयोगी होता है और एक पंक्ति प्रति समूह तथा कई शर्त-आधारित कॉलम वाला पिवट-जैसा परिणाम देता है।

SELECT
  region,
  COUNT(*) FILTER (WHERE status = 'paid')     AS paid,
  COUNT(*) FILTER (WHERE status = 'refunded') AS refunded
FROM orders
GROUP BY region;

महीनों को कॉलम में बदलना

एक सामान्य रिपोर्ट पंक्तियों को कॉलम में बदलती है। FILTER, एक्सटेंशन फ़ंक्शन के बिना, साफ़-सुथरा मासिक पिवट बनाता है।

SELECT
  product_id,
  SUM(total) FILTER (WHERE month = 1) AS jan,
  SUM(total) FILTER (WHERE month = 2) AS feb
FROM sales
GROUP BY product_id;

योजना पढ़ना

EXPLAIN ANALYZE एक ही स्कैन पर एकल Aggregate नोड की पुष्टि करता है। इसकी तुलना तीन अलग-अलग क्वेरी से करें, ताकि बचाए गए स्कैन दिखाई दें।

EXPLAIN ANALYZE
SELECT
  COUNT(*) FILTER (WHERE status = 'paid') AS paid,
  COUNT(*) FILTER (WHERE status = 'refunded') AS refunded
FROM orders;

FILTER बनाम WHERE

अंतर याद रखें:

  • WHERE किसी भी समुच्चय के उन्हें देखने से पहले पंक्तियाँ हटा देता है
  • FILTER सभी पंक्तियों को रखता है, लेकिन यह सीमित करता है कि कोई विशिष्ट समुच्चय किन पंक्तियों की गणना करे

जब अलग-अलग समुच्चयों को अलग-अलग शर्तों की आवश्यकता हो, तब FILTER का उपयोग करें।

इंडेक्स के साथ संयोजन

यदि अधिकांश मेट्रिक्स किसी उपसमुच्चय को लक्ष्य बनाते हैं (जैसे केवल हाल की पंक्तियाँ), तो साझा शर्त के लिए WHERE जोड़ें, ताकि इंडेक्स स्कैन का दायरा घटा दे; फिर प्रत्येक मेट्रिक के विभाजन के लिए FILTER का उपयोग करें।

SELECT
  COUNT(*) FILTER (WHERE status = 'paid') AS paid
FROM orders
WHERE created_at >= now() - interval '30 days';

शर्त के आधार पर अलग-अलग मानों की गणना

FILTER का उपयोग COUNT(DISTINCT ...) के साथ भी किया जा सकता है। इससे कई समूहीकृत क्वेरी के बजाय एक ही स्कैन में प्रत्येक स्थिति के लिए अलग-अलग ग्राहकों की गणना की जा सकती है।

SELECT
  COUNT(DISTINCT customer_id) FILTER (WHERE status = 'paid') AS paying_customers
FROM orders;

त्वरित जाँच

शर्त-आधारित समुच्चय के अपने ज्ञान की जाँच करें।

पुनरावलोकन

आपने शर्त-आधारित समुच्चय सीखा:

  • FILTER या CASE के साथ एक ही स्कैन में कई मेट्रिक्स की गणना करें
  • FILTER अधिक पठनीय है और किसी भी समुच्चय के साथ काम करता है
  • पिवट-शैली की रिपोर्ट के लिए GROUP BY के साथ संयोजित करें
  • WHERE पंक्तियाँ हटाता है; FILTER एकल समुच्चय को सीमित करता है
  • साझा WHERE जोड़ें, ताकि इंडेक्स स्कैन का दायरा घटा सकें
शुरुआत निःशुल्क

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

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

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

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

क्या “FILTER और conditional aggregation से query को अनुकूलित करना” पाठ निःशुल्क है?

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

“FILTER और conditional aggregation से query को अनुकूलित करना” में मैं क्या सीखूँगा?

जानें कि FILTER clause और CASE-आधारित conditional aggregation कई अलग query चलाने के बजाय एक ही table pass में कई metric निकालने देते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PostgreSQL प्रदर्शन और क्वेरी अनुकूलन का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

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

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

“FILTER और conditional aggregation से query को अनुकूलित करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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