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

Pomalý dotaz na zobrazení UNION ALL

Zdá se, že se jedná o chybu pilota. Plán dotazů "v" vybírá z alespoň 5 různých tabulek.

Jste si jisti, že jste připojeni ke správné databázi? Možná existují nějaká funky nastavení search_path? Možná jsou t1 a t2 ve skutečnosti pohledy (možná v jiném schématu)? Možná nějak vybíráte ze špatného pohledu?

Upraveno po upřesnění:

Používáte zcela novou funkci nazvanou „odebírání spojení“ :http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

http://rhaas.blogspot.com/2010 /06/why-join-removal-is-cool.html

Zdá se, že tato funkce se nespustí, když je zapojena všechna unie. Pravděpodobně budete muset přepsat pohled pouze pomocí požadovaných dvou tabulek.

další úprava:Zdá se, že používáte agregaci (jako „vyberte počet(*) z v“ vs. „vyberte * z v“), což by mohlo mít velmi odlišné plány tváří v tvář odstranění spojení. Myslím, že se nedostaneme daleko, aniž byste zveřejnili skutečné dotazy, definice pohledů a tabulek a použité plány...



  1. Dotaz Mysql vrací místo požadované hodnoty ID zdroje #8

  2. Jak převést datum a čas na UTC v MySQL

  3. nekonzistentní historie migrace při změně názvu aplikace django

  4. Převod data v MySQL z pole řetězce