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

PostgreSQL में मेरी तालिका पर अपेक्षा से अधिक चुनें DISTINCT धीमा है

हालांकि Postgres में अभी तक कोई इंडेक्स स्किप स्कैन नहीं है, इसका अनुकरण करें:

WITH RECURSIVE cte AS (
   (   -- parentheses required
   SELECT product_id
   FROM   tickers
   ORDER  BY 1
   LIMIT  1
   )
   UNION ALL
   SELECT l.*
   FROM   cte c
   CROSS  JOIN LATERAL (
      SELECT product_id
      FROM   tickers t
      WHERE  t.product_id > c.product_id  -- lateral reference
      ORDER  BY 1
      LIMIT  1
      ) l
   )
TABLE  cte;

(product_id) . पर एक इंडेक्स के साथ और तालिका में केवल 40 अद्वितीय उत्पाद आईडी यह तेज़ होना चाहिए . पूंजी के साथ F .
पीके इंडेक्स (product_id, trade_id) . पर इसके लिए भी अच्छा है!

प्रति product_id . में बहुत कम पंक्तियों के साथ (आपके डेटा वितरण के विपरीत), DISTINCT / DISTINCT ON उतना ही तेज़ या तेज़ होगा।

इंडेक्स स्किप स्कैन को लागू करने का काम जारी है।
देखें:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे make_interval () PostgreSQL में काम करता है

  2. एक सेट-रिटर्निंग फ़ंक्शन को एक सरणी तर्क के साथ कई बार कॉल करें

  3. रूबी में डेटटाइम का मिलीसेकंड रिज़ॉल्यूशन

  4. जीआईएसटी और जीआईएन इंडेक्स के बीच अंतर

  5. Slony-I 2.0.x को नवीनतम संस्करण 2.1.x में अपग्रेड करना