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

Postgresql में एकाधिक स्तंभों पर एकाधिक अनुक्रमणिका बनाम एकल अनुक्रमणिका

भले ही आपने संबंध पर कितने सूचकांक बनाए हों, उनमें से केवल एक का उपयोग एक निश्चित क्वेरी में किया जाएगा (जो कि क्वेरी, सांख्यिकी आदि पर निर्भर करता है)। तो आपके मामले में आपको दो सिंगल कॉलम इंडेक्स बनाने से संचयी लाभ नहीं मिलेगा। अनुक्रमणिका से सबसे अधिक प्रदर्शन प्राप्त करने के लिए मैं (स्थान, टाइमस्टैम्प) पर समग्र अनुक्रमणिका का उपयोग करने का सुझाव दूंगा।

ध्यान दें, कि क्वेरी ... WHERE timestamp BETWEEN smth AND smth हैं ... WHERE location = 'smth' . जैसे प्रश्नों के दौरान उपरोक्त अनुक्रमणिका का उपयोग नहीं करेगा या ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth मर्जी। ऐसा इसलिए है क्योंकि अनुक्रमणिका में पहली विशेषता खोज और छँटाई के लिए महत्वपूर्ण है।

प्रदर्शन करना न भूलें

ANALYZE;

आंकड़े एकत्र करने के लिए सूचकांक निर्माण के बाद।

अपडेट करें: @MondKin . के रूप में टिप्पणियों में उल्लिखित कुछ प्रश्न वास्तव में एक ही संबंध पर कई अनुक्रमणिका का उपयोग कर सकते हैं। उदाहरण के लिए, OR . के साथ क्वेरी करें खंड जैसे a = 123 OR b = 456 (यह मानते हुए कि दोनों स्तंभों के लिए अनुक्रमणिका हैं)। इस मामले में पोस्टग्रेज दोनों इंडेक्स के लिए बिटमैप इंडेक्स स्कैन करेंगे, परिणामी बिटमैप्स का एक संघ बनाएंगे और बिटमैप हीप स्कैन के लिए इसका इस्तेमाल करेंगे। कुछ स्थितियों में AND . के लिए एक ही योजना का उपयोग किया जा सकता है क्वेरी लेकिन मिलन के बजाय एक चौराहा होगा।



  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. कॉलम डेटाटाइप को सरणी से पूर्णांक में बदलें

  4. पोस्टग्रेएसक्यूएल सबक्वेरी लाइक . का उपयोग कर रहा है

  5. PostgreSQL में एक स्ट्रिंग के अंदर किसी विशिष्ट वर्ण की पहली और अंतिम घटनाओं को कैसे खोजें