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

पोस्टग्रेज क्वेरी ऑप्टिमाइज़ेशन (इंडेक्स स्कैन के लिए बाध्य करना)

परीक्षण . के लिए जिन उद्देश्यों के लिए आप अनुक्रमिक स्कैन को "अक्षम" करके अनुक्रमणिका के उपयोग को बाध्य कर सकते हैं - केवल आपके वर्तमान सत्र में सर्वश्रेष्ठ:

SET enable_seqscan = OFF;

नहीं करें इसे एक उत्पादक सर्वर पर उपयोग करें। मैनुअल में विवरण यहाँ।

मैंने "अक्षम करना" उद्धृत किया, क्योंकि आप वास्तव में अनुक्रमिक तालिका स्कैन को अक्षम नहीं कर सकते। लेकिन कोई अन्य उपलब्ध विकल्प अब Postgres के लिए बेहतर है। यह साबित करेगा कि (metric_id, t) . पर मल्टीकॉलम इंडेक्स कर सकते हैं इस्तेमाल किया जा सकता है - प्रमुख कॉलम पर एक इंडेक्स जितना प्रभावी नहीं है।

आप अपने PRIMARY KEY . में कॉलम के क्रम को बदलकर संभवत:बेहतर परिणाम प्राप्त कर सकते हैं (और इसके साथ पर्दे के पीछे इसे लागू करने के लिए इस्तेमाल किया जाने वाला इंडेक्स) से (t, metric_id) तक . या एक अतिरिक्त बनाएं इस तरह उलटे कॉलम के साथ अनुक्रमणिका।

  • क्या पहले फ़ील्ड पर प्रश्नों के लिए एक समग्र अनुक्रमणिका भी अच्छी है?

आपको आम तौर पर मैन्युअल हस्तक्षेप से बेहतर क्वेरी योजनाओं को लागू करने की आवश्यकता नहीं होती है। अगर सेटिंग enable_seqscan = OFF . है एक बहुत . की ओर ले जाता है बेहतर योजना, शायद आपके डेटाबेस में कुछ सही नहीं है। इस संबंधित उत्तर पर विचार करें:

  • पोस्टग्रेएसक्यूएल को कभी-कभी खराब क्वेरी प्लान चुनने से रोकें


  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. रिकॉर्ड प्राप्त करें जहां जेसन कॉलम कुंजी रिक्त है

  3. मणि स्थापित पीजी libpq से बाध्य नहीं हो सकता

  4. PostgreSQL के साथ धीमी क्वेरी से निपटना

  5. डेटाबेस के भीतर केवल एक तालिका से सम्मिलित विवरण प्राप्त करने के लिए pg_dump का उपयोग करना