2012-12-21 61 views
2

我有这个查询包含一个dblink,因为我需要连接到另一个数据库,它似乎很慢(只有124记录50.343秒)。有什么办法可以让它变快吗?下面是代码:postgresql慢查询(dblink和内部联接)

select * 
from 
    customer 
    INNER JOIN 
    dblink('host=192.168.3.9 dbname=db2 user=postgres password=postgres', ' 
     SELECT 
      status, 
      last_churn_1, 
      attempts, 
      last_dialed, 
      lead_id, 
      date_added 
     FROM campaign_customer 
     ') AS table2 (
      status char(50), 
      last_churn_1 char(50), 
      attempts int, 
      last_dialed char(250), 
      lead_id char(8), 
      date_added char(50) 
     ) ON customer.phone1 = table2.last_dialed 
where customer.leadid = '3434' and table2.lead_id='3434' 
+1

你能告诉'解释这个查询ANALYZE'? –

+2

尽可能地将where子句移入dblink查询中,否则执行程序将检索整个远程表。也可能你的'table2'应该是's'? –

+0

@DanielVérité可以试试看。 –

回答

3

丹尼尔·建议:

select * 
from 
    customer 
    INNER JOIN 
    dblink('host=192.168.3.9 dbname=db2 user=postgres password=postgres', $$ 
     SELECT 
      status, 
      last_churn_1, 
      attempts, 
      last_dialed, 
      lead_id, 
      date_added 
     FROM campaign_customer 
     where lead_id='3434' 
     $$) AS table2 (
      status char(50), 
      last_churn_1 char(50), 
      attempts int, 
      last_dialed char(250), 
      lead_id char(8), 
      date_added char(50) 
     ) ON customer.phone1 = table2.last_dialed 
where customer.leadid = '3434' 
+0

谢谢。这一个工程:D –