La consulta PostgreSQL lleva demasiado tiempo

Tengo base de datos con unos pocos cientos de millones de filas. Estoy ejecutando la siguiente consulta:

select * from "Payments" as p
inner join "PaymentOrders" as po
on po."Id" = p."PaymentOrderId"
inner join "Users" as u
On u."Id" = po."UserId"
INNER JOIN "Roles" as r
on u."RoleId" = r."Id"
Where r."Name" = 'Moses'
LIMIT 1000

Cuando la cláusula where encuentra una coincidencia en la base de datos, obtengo el resultado en varios milisegundos, pero si modifico la consulta y especifico una inexistenter."Name" en donde cláusula, se tarda demasiado tiempo en completarse. Supongo que PostgreSQL está haciendo un escaneo secuencial en elPayments Tabla (que contiene la mayoría de las filas), comparando cada fila una por una.

¿No es postgresql lo suficientemente inteligente como para comprobar primero siRoles tabla contiene cualquier fila conName 'Moses'?

La tabla de roles solo contiene 15 filas, mientras que los pagos contienen ~ 350 millones.

Estoy ejecutando PostgreSQL 9.2.1.

Por cierto, esta misma consulta en el mismo esquema / datos tarda 0.024 ms en completarse en MS SQL Server.

Actualizaré la pregunta y publicaré EXPLAIN ANALYZE data en unas pocas horas.

Aquí explicamos analizar resultados:http://explain.depesz.com/s/7e7

Y aquí está la configuración del servidor:

version PostgreSQL 9.2.1, compiled by Visual C++ build 1600, 64-bit
client_encoding UNICODE
effective_cache_size    4500MB
fsync   on
lc_collate  English_United States.1252
lc_ctype    English_United States.1252
listen_addresses    *
log_destination stderr
log_line_prefix %t 
logging_collector   on
max_connections 100
max_stack_depth 2MB
port    5432
search_path dbo, "$user", public
server_encoding UTF8
shared_buffers  1500MB
TimeZone    Asia/Tbilisi
wal_buffers 16MB
work_mem    10MB

Estoy ejecutando postgresql en un i5 cpu (4 núcleos, 3,3 GHz), 8 GB de RAM y Crucial m4 SSD 128GB

ACTUALIZAR Esto parece un error en el planificador de consultas. Con la recomendación de Erwin Brandstetter lo reporté aLista de correo de errores de Postgresql.

Respuestas a la pregunta(2)

Su respuesta a la pregunta