sql >> Database >  >> RDS >> PostgreSQL

Langzame zoekopdracht op UNION ALL-weergave

Dit lijkt een geval van een pilootfout te zijn. Het "v"-queryplan selecteert uit ten minste 5 verschillende tabellen.

Nu, weet u zeker dat u bent verbonden met de juiste database? Misschien zijn er enkele funky zoekpad-instellingen? Misschien zijn t1 en t2 eigenlijk weergaven (mogelijk in een ander schema)? Misschien selecteert u op de een of andere manier uit de verkeerde weergave?

Bewerkt na verduidelijking:

Je gebruikt een vrij nieuwe functie genaamd "join removal":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

Het lijkt erop dat de functie niet in werking treedt wanneer alle vakbonden erbij betrokken zijn. U moet waarschijnlijk de weergave herschrijven met alleen de vereiste twee tabellen.

nog een bewerking:het lijkt erop dat u een aggregaat gebruikt (zoals "select count(*) from v" vs. "select * from v"), dat enorm verschillende plannen zou kunnen krijgen bij het verwijderen van joins. Ik denk dat we niet ver komen zonder dat u de feitelijke vragen, weergave- en tabeldefinities en gebruikte plannen plaatst...



  1. Hoe maak ik verbinding met PostgreSQL zonder een databasenaam op te geven?

  2. Hoe UUID in de RAW (16) kolom in te voegen

  3. Exec opgeslagen procedure in dynamische tijdelijke tabel

  4. SQL met rang en partitie