PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Powolne zapytanie w widoku UNION ALL

Wydaje się, że to przypadek błędu pilota. Plan zapytań „v” wybiera z co najmniej 5 różnych tabel.

Czy jesteś pewien, że masz połączenie z właściwą bazą danych? Może są jakieś dziwne ustawienia search_path? Może t1 i t2 to faktycznie widoki (być może w innym schemacie)? Może w jakiś sposób wybierasz z niewłaściwego punktu widzenia?

Edytowane po wyjaśnieniu:

Używasz całkiem nowej funkcji o nazwie „usuwanie dołączania” :http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

http://rhaas.blogspot.com/2010 /06/dlaczego-dołącz-usunięcie-jest-fajne.html

Wygląda na to, że ta funkcja nie uruchamia się, gdy w grę wchodzą wszystkie związki. Prawdopodobnie będziesz musiał przepisać widok, używając tylko wymaganych dwóch tabel.

inna edycja:Wygląda na to, że używasz agregatu (takiego jak „wybierz liczbę(*) z v” vs. „wybierz * z v”), które mogą uzyskać zupełnie inne plany w obliczu usunięcia dołączenia. Myślę, że nie zajdziemy daleko, jeśli nie opublikujesz rzeczywistych zapytań, definicji widoków i tabel oraz użytych planów...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz kolumnę z małymi literami z grupuj według lub wybierz małą (kolumnę) w Rails 4

  2. Jak przyspieszyć strony administracyjne Django za pomocą szacowania liczby PostgreSQL?

  3. Jak uniknąć podkreśleń w Postgresql

  4. Ograniczenie upuszczania PostgreSQL o nieznanej nazwie

  5. Postgres - usuń element z tablicy jsonb