sql >> Databáze >  >> RDS >> PostgreSQL

Zpomaluje přidání cizích tabulek do klauzulí WITH dotaz v PostgreSQL?

můžete použít Explain, abyste ukázali, jak optimalizátor dotazů zpracuje váš dotaz.

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

Ve výše uvedeném případě by PSQL mělo vidět, že temp3 není použito, a nezahrnovat jej.

pomocí vašeho příkladu výše na jedné mé databázi.

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)

nevšimnete si žádné zmínky o temp3. V odpovědi na vaši úpravu o tom, proč to neovlivňuje dobu dotazu, je optimalizátor dostatečně chytrý, aby viděl, že se nepoužívá, a neobtěžoval se s tím. Proto je to optimalizátor.



  1. Jak vytvořím úlohu cron pro spuštění postgresové funkce SQL?

  2. chyby v programu GWT Hibernate 2

  3. Jak pomocí DATEDIFF vrátit rok, měsíc a den?

  4. Odeslání dvou polí pomocí požadavku ajax post