PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Requête lente sur la vue UNION ALL

Cela semble être un cas d'erreur de pilotage. Le plan de requête "v" sélectionne au moins 5 tables différentes.

Maintenant, êtes-vous sûr d'être connecté à la bonne base de données ? Peut-être y a-t-il des paramètres funky search_path ? Peut-être que t1 et t2 sont en fait des vues (éventuellement dans un schéma différent) ? Peut-être avez-vous en quelque sorte choisi la mauvaise vue ?

Modifié après clarification :

Vous utilisez une toute nouvelle fonctionnalité appelée "suppression de jointure" :http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

http://rhaas.blogspot.com/2010 /06/pourquoi-join-removal-est-cool.html

Il semble que la fonctionnalité ne démarre pas lorsque l'union est impliquée. Vous devrez probablement réécrire la vue en utilisant uniquement les deux tables requises.

une autre modification :vous semblez utiliser un agrégat (comme "select count (*) from v" vs. "select * from v"), qui pourrait obtenir des plans très différents face à la suppression de la jointure. Je suppose que nous n'irons pas très loin sans que vous publiiez les requêtes réelles, les définitions de vue et de table et les plans utilisés...