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

PostgreSQL क्वेरी के लिए सही इंडेक्स चुनना

इस विशेष क्रम के साथ एक आंशिक, बहु-स्तंभ अनुक्रमणिका बनाएं:

CREATE INDEX products_status_sales_partial_idx ON products (status, sales DESC)
WHERE  category NOT IN ('cat3','cat7');

अपनी क्वेरी को थोड़ा संशोधित करें:

SELECT product_no, sales 
FROM   products 
WHERE  status = 'something'
AND    category NOT IN ('cat3', 'cat7') 
ORDER  BY status, sales DESC 
LIMIT  3;

statusजोड़ना ORDER BY . के पहले तत्व के रूप में खंड बेमानी और व्यर्थ लगता है। लेकिन इसे आजमाएं।

क्यों?

क्वेरी प्लानर इतना समझदार नहीं है कि यह समझ सके कि

. के साथ
WHERE  status = 'something' ...
ORDER  BY sales DESC

अनुक्रमणिका का क्रम क्रम (status, sales DESC) तार्किक परिणाम के रूप में मेल खाता है। तो यह सभी पढ़ने जा रहा है योग्य पंक्तियाँ, क्रमित करें और शीर्ष 3 चुनें।

status adding जोड़कर ORDER BY आप क्वेरी प्लानर को इंडेक्स से शीर्ष 3 प्रविष्टियों को सीधे पढ़ने के लिए सक्षम करते हैं। परिमाण के कई क्रम . द्वारा गति-अप की अपेक्षा करें ।

PostgreSQL 8.4 और 9.1 के साथ परीक्षण किया गया।



  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. क्या PostgreSQL इंडेक्स सरणी कॉलम कर सकता है?

  3. Mac OS पर पोस्टग्रेस्क्ल को 10.1 से 9.6 तक डाउनग्रेड करने के लिए होमब्रे का उपयोग कैसे करें

  4. रेल 3.2 में दो पोस्टग्रेज डेटाबेस से कनेक्ट नहीं हो सकता।

  5. स्प्रिंग बैच - पोस्टग्रेज पर मेटाडेटा टेबल बनाने और वास्तविक डेटा को mysql में लोड करने में असमर्थ