sql >> Base de Datos >  >> RDS >> PostgreSQL

Consulta lenta en la vista UNION ALL

Esto parece ser un caso de un error del piloto. El plan de consulta "v" selecciona de al menos 5 tablas diferentes.

Ahora, ¿está seguro de que está conectado a la base de datos correcta? ¿Tal vez hay algunas configuraciones funky search_path? ¿Tal vez t1 y t2 son en realidad vistas (posiblemente en un esquema diferente)? ¿Quizás de alguna manera estás seleccionando desde la vista incorrecta?

Editado después de la aclaración:

Está utilizando una función bastante nueva llamada "eliminación de unión":http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

http://rhaas.blogspot.com/2010 /06/por-que-unirse-eliminar-es-genial.html

Parece que la función no se activa cuando se trata de la unión de todos. Probablemente tenga que reescribir la vista usando solo las dos tablas requeridas.

otra edición:parece que está utilizando un agregado (como "seleccionar recuento (*) de v" frente a "seleccionar * de v"), lo que podría generar planes muy diferentes frente a la eliminación de la unión. Supongo que no llegaremos muy lejos sin que publique las consultas reales, las definiciones de vistas y tablas y los planes utilizados...