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 - 从 SERIAL、TIMESTAMP 和 NUMERIC(6,2) 中选择