postgresql 慢查询(dblink 和内部连接)

Posted

技术标签:

【中文标题】postgresql 慢查询(dblink 和内部连接)【英文标题】:postgresql slow query (dblink and inner join) 【发布时间】:2012-12-09 05:17:28 【问题描述】:

我有一个包含 dblink 的查询,因为我需要连接到另一个数据库,而且它看起来很慢(仅 124 条记录需要 50.343 秒)。有没有办法让它快点?下面是代码:

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'

【问题讨论】:

你能显示这个查询的EXPLAIN ANALYZE吗? 尽可能多地将 where 子句移动到 dblink 查询中,否则执行程序将检索整个远程表。大概你的table2 应该是s @DanielVérité 好吧,我试试看。 【参考方案1】:

正如丹尼尔建议的那样:

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'

【讨论】:

以上是关于postgresql 慢查询(dblink 和内部连接)的主要内容,如果未能解决你的问题,请参考以下文章

postgresql dblink 使用

postgresql dblink 使用

iBATIS 和 dblink?

为啥这个查询这么慢? - PostgreSQL - 从 SERIAL、TIMESTAMP 和 NUMERIC(6,2) 中选择

PostgreSQL。日志文件中的慢查询在 psql 中很快

一次PostgreSQL行估算偏差导致的慢查询分析