从差异表中从diff数据库获取数据的策略

时间:2013-04-16 11:48:28

标签: sql postgresql optimization query-optimization

问题

  • 我有两个数据库user_works数据库和定价数据库。
  • 我想在user_works中连接两个表user_table 数据库& rent_table,使用user_id
  • 在定价数据库中

到目前为止我做了什么

  • 我先拨打user_works db。
  • 从user_table中获取ID。
  • 然后将ID传递给price db
  • 中的rent_table

示例:

$user_id = select user_id fron user_table WHERE name=abc

将$ user_id传递给dbObject user_works db并获取用户ID

$rent = select user_id,rent from rent_table WHERE user_id IN ( $user_ids )

将$ rent传递给定价数据库的dbObject 我想在php应用程序中执行此操作

有没有更好的方法来做到这一点。定价数据库真的很重要?比如使用临时表等。

1 个答案:

答案 0 :(得分:1)

使用定价数据库连接中的dblink

select r.*
from
    dblink(
        'dbname=user_works password=password user=user',
        $$ select user_id from user_table where name = 'abc' $$
    ) as u(user_id int)
    inner join
    rent_table r on r.user_id = u.user_id

您需要以超级用户身份创建dblink扩展名:

create extension dblink;

或者从远程数据库创建本地视图:

create view user_table as
select *
from
    dblink(
        'dbname=user_works password=password user=user',
        $$ select user_id, name from user_table $$
    ) as t(user_id int, name text)
;

现在查询它是本地的:

select * from user_table where name = 'abc';