sql >> Database teknologi >  >> RDS >> PostgreSQL

Langsom forespørgsel på UNION ALL-visning

Dette ser ud til at være et tilfælde af en pilotfejl. "v"-forespørgselsplanen vælger fra mindst 5 forskellige tabeller.

Nu, er du sikker på, at du er forbundet til den rigtige database? Måske er der nogle funky search_path-indstillinger? Måske er t1 og t2 faktisk visninger (muligvis i et andet skema)? Måske du på en eller anden måde vælger fra den forkerte visning?

Redigeret efter præcisering:

Du bruger en helt ny funktion kaldet "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

Det ser ud til, at funktionen ikke slår ind, når fagforeningen alle er involveret. Du er sandsynligvis nødt til at omskrive visningen ved kun at bruge de påkrævede to tabeller.

en anden redigering:Det ser ud til, at du bruger et aggregat (som "vælg antal(*) fra v" vs. "vælg * fra v"), som kunne få vidt forskellige planer i forhold til fjernelse af joinforbindelser. Jeg gætter på, at vi ikke kommer ret langt, uden at du sender de faktiske forespørgsler, visninger og tabeldefinitioner og -planer, der er brugt...



  1. mySQL-undtagelse:Kan ikke oprette forbindelse til nogen af ​​de angivne MySQL-værter. gennem C#

  2. SQL - Kombinerer flere lignende forespørgsler

  3. Hvordan kan jeg indsætte flere rækker i oracle med en sekvensværdi?

  4. PHP &SQL Server - feltnavne afkortet