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

पोस्टग्रेज - क्या यह बूलियन कॉलम पर आंशिक अनुक्रमणिका बनाने का सही तरीका है?

मैंने पुष्टि की है कि इंडेक्स उम्मीद के मुताबिक काम करता है।

मैंने यादृच्छिक डेटा को फिर से बनाया, केवल इस बार diet_glutenfree set सेट किया करने के लिए random() > 0.9 इसलिए on . होने की केवल 10% संभावना है बिट।

फिर मैंने इंडेक्स को फिर से बनाया और फिर से क्वेरी करने की कोशिश की।

SELECT RecipeId from RecipeMetadata where diet_glutenfree;

रिटर्न:

'Index Scan using idx_recipemetadata_glutenfree on recipemetadata  (cost=0.00..135.15 rows=1030 width=16)'
'  Index Cond: (diet_glutenfree = true)'

और:

SELECT RecipeId from RecipeMetadata where NOT diet_glutenfree;

रिटर्न:

'Seq Scan on recipemetadata  (cost=0.00..214.26 rows=8996 width=16)'
'  Filter: (NOT diet_glutenfree)'

ऐसा लगता है कि मेरा पहला प्रयास प्रदूषित हो गया था क्योंकि पीजी का अनुमान है कि इंडेक्स हिट करने के बजाय पूरी तालिका को स्कैन करना तेज़ है अगर इसे आधे से अधिक पंक्तियों को लोड करना है।

हालांकि, मुझे लगता है कि कॉलम की पूरी अनुक्रमणिका पर मुझे ये सटीक परिणाम मिलेंगे। क्या आंशिक अनुक्रमणिका में अनुक्रमित पंक्तियों की संख्या को सत्यापित करने का कोई तरीका है?

अपडेट करें

सूचकांक लगभग 40k है। मैंने उसी कॉलम की पूरी अनुक्रमणिका बनाई है और यह 200k से अधिक है, इसलिए ऐसा लगता है कि यह निश्चित रूप से आंशिक है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में रेल टाइमज़ोन नामों को कैसे मैप करें?

  2. डॉकटर वॉल्यूम को एक मशीन से दूसरी मशीन में कैसे कॉपी करें?

  3. मैं psycopg और gevent का उपयोग करके कनेक्शन कैसे पूल कर सकता हूं?

  4. PostgreSQL तालिका के लिए कितना बड़ा है?

  5. क्या Npgsql पर FETCH को सीधे पैरामीटर के रूप में एक रेफकर्सर पास करना संभव है?