आपका कार्य बहुत कुछ कर रहा है खाली काम का।
आप FOR
. के साथ सरल बना सकते हैं अधिक थकाऊ और महंगे स्पष्ट कर्सर के बजाय निहित कर्सर के साथ लूप।
एक करीब से देखने पर पता चलता है कि आपको इसकी बिल्कुल भी आवश्यकता नहीं है। मौलिक रूप से सरल करें एक साधारण क्वेरी के साथ। मैंने इसे एक SQL फ़ंक्शन में लपेटा:
CREATE OR REPLACE FUNCTION ccdb.fn_email_details_auto()
RETURNS TABLE (code integer, area smallint, action smallint, flag smallint
, ucount integer, view_cnt integer) AS
$func$
SELECT u.section_code, u.ddu_area, u.ddu_action, u.status_flag
, u.ccdb_ucount, u.ccdb_view_cnt
FROM ccdb.update_qtable u
WHERE u.entry_time >= now()::date - 1
AND u.entry_time < now()::date -- sargable!
ORDER BY u.section_code, u.ddu_area, u.ddu_action;
$func$ LANGUAGE sql;
बहुतहोना चाहिए इसे वापस करते समय तेज़।
इसके अलावा, इसका उपयोग करें:
WHERE u.entry_time >= now()::date - 1
AND u.entry_time < now()::date
इसके बजाय:
WHERE entry_time::date = now()::date - interval '1 day'
विकल्प सारगर्भित है और entry_time
. पर एक सादे अनुक्रमणिका का उपयोग कर सकता है , जो प्रदर्शन के लिए महत्वपूर्ण होना चाहिए।