PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Бавна заявка в изглед UNION ALL

Това изглежда е случай на пилотска грешка. Планът за заявка "v" избира от поне 5 различни таблици.

Сега, сигурни ли сте, че сте свързани с правилната база данни? Може би има някои странни настройки за search_path? Може би t1 и t2 всъщност са изгледи (вероятно в различна схема)? Може би по някакъв начин избирате от грешен изглед?

Редактирано след пояснение:

Използвате доста нова функция, наречена „премахване на присъединяване“: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

Изглежда, че функцията не се задейства, когато участва union all. Вероятно трябва да пренапишете изгледа, като използвате само необходимите две таблици.

друга редакция:Изглежда, че използвате агрегат (като „изберете брой (*) от v“ ​​срещу „изберете * от v“), което може да получи много различни планове в лицето на премахването на присъединяване. Предполагам, че няма да стигнем много далеч, без да публикувате действителните заявки, изгледи и дефиниции на таблици и използвани планове...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за търсене по ден/месец/година/ден&месец/ден&година и т.н

  2. Как да използвам uuid с тип индекс на postgresql gist?

  3. Какъв е най-добрият начин да копирате подмножество от редове на таблица от една база данни в друга в Postgres?

  4. PL/pgSQL проверка дали съществува ред

  5. Създайте sql таблица от dask dataframe, като използвате map_partitions и pd.df.to_sql