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

लेफ्ट जॉइन लेटरल और ऐरे एग्रीगेट्स

जैसा कि @Denis ने पहले ही टिप्पणी कर दी है:LATERAL . की कोई आवश्यकता नहीं है .साथ ही, आपकी सबक्वेरी ने गलत कॉलम का चयन किया। यह काम करता है:

SELECT t1.t1_id, t1.t1_data, t2_ids
FROM   t1
LEFT   JOIN (
    SELECT t1_id, array_agg(t2_id) AS t2_ids
    FROM   t1_t2_rel
    GROUP  BY 1
    ) sub USING (t1_id);

-SQL fiddle.

प्रदर्शन और परीक्षण

आपके द्वारा उल्लिखित आगामी अनुक्रमिक स्कैन के संबंध में:यदि आप पूरी तालिका को क्वेरी करते हैं, तो अनुक्रमिक स्कैन अक्सर तेज़ होता है . आपके द्वारा चलाए जा रहे संस्करण, आपके हार्डवेयर, आपकी सेटिंग्स और कार्डिनैलिटी के आंकड़े और आपके डेटा के वितरण पर निर्भर करता है। चुनिंदा WHERE . के साथ प्रयोग करें खंड जैसे WHERE t1.t1_id < 1000 या WHERE t1.t1_id = 1000 और प्लानर सेटिंग के साथ संयोजित करें विकल्पों के बारे में जानने के लिए:

SET enable_seqscan = off;
SET enable_indexscan = off;

रीसेट करने के लिए:

RESET enable_seqscan;
RESET enable_indexscan;

केवल आपके स्थानीय सत्र में, ध्यान रहे! dba.SE पर यह संबंधित उत्तर अधिक निर्देश हैं।
बेशक, आपकी सेटिंग भी बंद हो सकती है:




  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 - Powershell

  3. पोस्टग्रेएसक्यूएल बाधा, जो कमिट पर चेक की जाती है और पहले नहीं

  4. Django डेटाबेस नहीं छोड़ सकता:psycopg2.OperationalError:वर्तमान में खुले डेटाबेस को नहीं छोड़ सकता

  5. Django सेटिंग्स दो इंजनों के साथ डेटाबेस को कॉन्फ़िगर करती हैं