sql >> Database teknologi >  >> RDS >> PostgreSQL

Forsinker tilføjelse af uvedkommende tabeller i en WITH-sætning en forespørgsel i PostgreSQL?

du kan bruge Explain til at vise, hvordan forespørgselsoptimeringsværktøjet håndterer din forespørgsel.

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

I ovenstående tilfælde skal PSQL se, at temp3 ikke bruges og ikke inkludere det.

ved at bruge dit eksempel ovenfor på en min dbs.

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)

du vil ikke bemærke nogen omtale af temp3. Når du besvarer din redigering, om hvorfor det ikke påvirker forespørgselstiden, er optimeringsværktøjet smart nok til at se, at det ikke bliver brugt og ikke gider at beregne det. Derfor er det grunden til, at det er en optimizer.



  1. Få værdien af ​​alle kolonner fra én tabel og få værdien af ​​anden kolonne fra anden tabel

  2. mysql-connector-java til mysql 5.6

  3. Hvordan får man et tabeloprettelsesscript i MySQL Workbench?

  4. Sådan fungerer FORMAT()-funktionen i SQL Server (T-SQL)