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

कई इंडेक्स को मिलाकर पोस्टग्रेज करता है

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

एक प्रयोग के रूप में आप:

CREATE EXTENSION btree_gist;
CREATE INDEX ix_coords_and_user_id ON test USING GIST (coords, user_id);

जिसके परिणामस्वरूप एक बड़ा सूचकांक होने की संभावना है, लेकिन उस क्वेरी को बढ़ावा दे सकता है - अगर यह काम करता है। ध्यान रखें कि इस तरह के इंडेक्स को बनाए रखने से INSERT काफ़ी धीमा हो जाएगा और UPDATE एस। अगर आप पुराने ix_coords को छोड़ देते हैं आपके प्रश्न ix_coords_and_user_id . का उपयोग करेंगे भले ही वे user_id . पर फ़िल्टर न करें , लेकिन यह ix_coords . से धीमा होगा . दोनों को रखने से INSERT बन जाएगा और UPDATE मंदी और भी खराब।

देखें btree-gist

(प्रश्न को संपादित करके अप्रचलित जो प्रश्न को पूरी तरह से बदल देता है; जब लिखा जाता है कि उपयोगकर्ता के पास एक बहु-स्तंभ अनुक्रमणिका थी, तो वे अब दो अलग-अलग में विभाजित हो गए हैं ):

ऐसा लगता है कि आप user_id . को फ़िल्टर या सॉर्ट नहीं कर रहे हैं , केवल create_date . Pg (user_id, create_date) जैसे बहु-स्तंभ अनुक्रमणिका के केवल दूसरे पद का उपयोग नहीं करेगा (नहीं कर सकता?) , इसे पहली वस्तु के उपयोग की भी आवश्यकता है।

अगर आप create_date को इंडेक्स करना चाहते हैं , इसके लिए एक अलग अनुक्रमणिका बनाएं। यदि आप (user_id, create_date) . का उपयोग करते हैं और इसकी आवश्यकता है अनुक्रमणिका और आम तौर पर केवल user_id का उपयोग न करें अकेले, देखें कि क्या आप कॉलम ऑर्डर को उलट सकते हैं। वैकल्पिक रूप से दो स्वतंत्र इंडेक्स बनाएं, (user_id) और (create_date) . जब दोनों स्तंभों की आवश्यकता होती है तो Pg एक बिटमैप अनुक्रमणिका स्कैन का उपयोग करके दो स्वतंत्र अनुक्रमणिकाओं को संयोजित कर सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. नया डेटा Postgres पर रेल सरणी स्तंभ के लिए जारी नहीं है

  2. plpgsql - घोषणा कथन में गतिशील तालिका नाम का उपयोग करना

  3. मैं दो JSON सरणियों के अंदर रिकॉर्ड कैसे मर्ज कर सकता हूं?

  4. क्या आप CREATE TABLE परिभाषा में एक इंडेक्स बना सकते हैं?

  5. पोस्टग्रेज सर्वर से कनेक्ट नहीं हो सका