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

क्या WITH क्लॉज में बाहरी टेबल जोड़ने से PostgreSQL में कोई क्वेरी धीमी हो जाती है?

आप यह दिखाने के लिए व्याख्या का उपयोग कर सकते हैं कि क्वेरी अनुकूलक आपकी क्वेरी को कैसे संभालेगा।

http://www.postgresql.org/docs/9.2/static /sql-explain.html

उपरोक्त मामले में पीएसक्यूएल को यह देखना चाहिए कि temp3 का उपयोग नहीं किया गया है और इसे शामिल नहीं किया गया है।

मेरे एक डीबीएस पर ऊपर अपने उदाहरण का उपयोग करते हुए।

explain with temp1 as (select * from cidrs), temp2 as (select * from contacts), temp3 as ( select * from accounts )  select * from temp1 join temp2 on temp1.id = temp2.id;
                             QUERY PLAN
---------------------------------------------------------------------
 Hash Join  (cost=22.15..25.44 rows=20 width=4174)
   Hash Cond: (temp1.id = temp2.id)
   CTE temp1
     ->  Seq Scan on cidrs  (cost=0.00..11.30 rows=130 width=588)
   CTE temp2
     ->  Seq Scan on contacts  (cost=0.00..10.20 rows=20 width=3586)
   ->  CTE Scan on temp1  (cost=0.00..2.60 rows=130 width=588)
   ->  Hash  (cost=0.40..0.40 rows=20 width=3586)
         ->  CTE Scan on temp2  (cost=0.00..0.40 rows=20 width=3586)
(9 rows)

आप temp3 का कोई उल्लेख नहीं देखेंगे। आपके संपादन का उत्तर देने में, यह क्वेरी समय को प्रभावित क्यों नहीं करता है, ऑप्टिमाइज़र यह देखने के लिए पर्याप्त स्मार्ट है कि इसका उपयोग नहीं किया जाता है और इसकी गणना करने में कोई परेशानी नहीं होती है। इसलिए कारण यह एक अनुकूलक है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यह Django (1.6) एनोटेट गिनती इतनी धीमी क्यों है?

  2. PostgreSQL में CSV फ़ाइल कैसे आयात करें

  3. स्प्रिंग-जेडीबीसी में अलगाव का स्तर क्रमिक है

  4. रेल प्रवासन:PostgreSQL पर Bigint विफल हो रहा है?

  5. कॉलम काउंट्स को रो काउंट्स में ट्रांसफर करने के लिए SQL क्वेरी