PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah menambahkan tabel asing dalam klausa WITH memperlambat kueri di PostgreSQL?

Anda dapat menggunakan Jelaskan untuk menunjukkan bagaimana pengoptimal kueri akan menangani kueri Anda.

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

Dalam kasus di atas, PSQL akan melihat bahwa temp3 tidak digunakan dan tidak menyertakannya.

menggunakan contoh Anda di atas pada salah satu dbs saya.

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)

Anda tidak akan melihat menyebutkan temp3. Dalam menjawab suntingan Anda, tentang mengapa itu tidak memengaruhi waktu kueri, pengoptimal cukup pintar untuk melihat bahwa itu tidak digunakan dan tidak repot menghitungnya. Oleh karena itu alasannya adalah pengoptimal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy func.count pada kolom boolean

  2. Apakah SELECT atau INSERT dalam suatu fungsi rentan terhadap kondisi balapan?

  3. Bagaimana to_timestamp() Bekerja di PostgreSQL

  4. Bagaimana cara mengupdate semua kolom dengan INSERT...ON CONFLICT...?

  5. Cara Menggunakan pgBackRest untuk Mencadangkan PostgreSQL dan TimescaleDB