jaime soler escribió:

> El problema aparece cuando tengo la tabla TR en oracle y TL en
> postgresql, que tanto si uso dblink, dblink_ora o fdw no consigo el uso
> de semi join, sino Foreign Scan  que entiendo que son equivalentes a seq
> scans.

A mí no me parece razonable pensar que se pueda optimizar mucho eso
actualmente.  Quizás en alguna versión futura donde tengamos más control
sobre qué condiciones se entregan al nodo remoto.

Quizás podrías poner la extracción desde Oracle en un CTE, y usar el CTE
en el EXISTS, del tipo

WITH remota AS (
  select ... FROM tr@dblink
     WHERE dat >= ... AND <= ...
)
SELECT * FROM TL WHERE EXISTS (
    SELECT .. FROM remota WHERE l.cod = remota.cod
)

pero no sé qué tan óptimo irá a resultar eso, porque si miras la
ubicación del "cod", puede tener que traer demasiado de la tabla remota.
Quizás podrías agregar en el CTE una condición para que sólo traiga los
registros que sean relevantes ...?

(BTW yo no usaría ni dblink ni dblink_ora; creo que con FDW deberías
tener los mejores resultados, o por lo menos es donde parece más
razonable de mejorar)

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a