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

धीमी गति से चलने वाली पोस्टग्रेज क्वेरी

धीमेपन का कारण खराब पंक्ति गणना अनुमान हैं जो PostgreSQL को नेस्टेड लूप में शामिल होने का चयन करते हैं। आपका लगभग सारा समय hfj_res_link . पर अनुक्रमणिका स्कैन में व्यतीत होता है , जिसे 1113 बार दोहराया जाता है।

मेरा पहला प्रयास होगा ANALYZE hfj_spidx_date और देखें कि क्या इससे मदद मिलती है। यदि हाँ, तो सुनिश्चित करें कि स्वतः विश्लेषण उस तालिका का अधिक बार उपयोग करता है।

अगला प्रयास होगा

SET default_statistics_target = 1000;

और फिर ANALYZE ऊपरोक्त अनुसार। अगर इससे मदद मिलती है, तो ALTER TABLE . का उपयोग करें STATISTICS को बढ़ाने के लिए hash_identity . पर और sp_value_high कॉलम।

यदि वह भी मदद नहीं करता है, और आपके पास PostgreSQL का नवीनतम संस्करण है, तो आप विस्तारित आँकड़े आज़मा सकते हैं :

CREATE STATISTICS myparamsda2_stats (dependencies)
   ON hash_identity, sp_value_high FROM hfj_spidx_date;

फिर ANALYZE तालिका फिर से देखें और देखें कि क्या इससे मदद मिलती है।

यदि वह सब मदद नहीं करता है, और आप अनुमानों को सही नहीं कर सकते हैं, तो आपको एक अलग कोण का प्रयास करना होगा:

CREATE INDEX ON hfj_res_link (target_resource_id, src_resource_id);

इससे इंडेक्स स्कैन में काफी तेजी आनी चाहिए और आपको अच्छी प्रतिक्रिया समय देना चाहिए।

अंत में, यदि उपरोक्त में से किसी का भी कोई प्रभाव नहीं पड़ता है, तो आप इस क्वेरी के लिए नेस्टेड लूप जॉइन को अस्वीकार करने के क्रूस उपाय का उपयोग कर सकते हैं:

BEGIN;
SET LOCAL enable_nestloop = off;
SELECT /* your query goes here */;
COMMIT;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ArrayField के अंदर Django JSONField

  2. पायथन का उपयोग करते हुए डेटाबेस को एक्सेस करते समय कनेक्शन ऑपरेशन के बीच में बंद कर दिया गया था

  3. PostgreSQL 9.0 को स्थापित करने के बाद मैं NAMEDATALEN कॉन्फ़िगरेशन को कैसे बदलूं?

  4. पोस्टग्रेज में अनुक्रम कैसे रीसेट करें और नए डेटा के साथ आईडी कॉलम भरें?

  5. हाइबरनेट (JPA) का उपयोग करके Postgresql को क्वेरी करने से तालिका नहीं मिलती है