PHP Mysql跨数据库连接

时间:2009-11-04 17:19:26

标签: php sql mysql join

假设我在同一台物理服务器上有两个独立的数据库X和Y.

我的所有查询目前都用完X.

我发现我在Y中有一个表我希望X可用于JOINS。

所以...现在我在X和Y中保留了X和Y所需的一个表的副本,但Y中的数据不断变化,因此副本很快就会过时。对于这个应用程序并不重要,但对于另一个我正在设计的现在,这是不会做的。

X现在只需要对Y中的表进行读访问。

是否有一种有效的方法在两个数据库之间进行连接?

我更喜欢mysql解决方案而不是在php中打开多个数据库连接。

谢谢。

编辑:那么这些线路变成了什么?:

$conn = mysql_connect('localhost','username','password');
@mysql_select_db('database_name',$conn)

是的..这是一个旧的应用程序,因此mysql而不是mysqli。假设我可以转换它。

EDIT2:所以我没有指定database_name.table_name并且只指定table_name我得到了什么,我指定database.table_name我得到了我要求的... ?是的。的工作原理。

EDIT3:跨数据库连接与同一数据库中的连接相比,是否有重大性能损失?不。看起来一样快。

谢谢大家的回复。

4 个答案:

答案 0 :(得分:13)

您必须在其他数据库中为该表添加别名:

select a.id
     , b.foreign_id
  from database1.table1 a
  join database2.table1 b
    on b.foreign_id = a.id

答案 1 :(得分:4)

如果2个数据库位于同一服务器上,您只需在连接查询中使用数据库名称限定表。

select * from database1.table1 as t1
 inner join database2.table2 as t2
 on t2.fk_id = t1.pk_id

答案 2 :(得分:2)

  

编辑:那么这些行会变成什么?:

     

$ conn =   的mysql_connect( '本地主机', '用户名', '密码');   @mysql_select_db( 'DATABASE_NAME',$康恩)

mysql_select_db是可选的。因为它只选择要使用的活动数据库。 http://us3.php.net/manual/en/function.mysql-select-db.php

  

是的..这是一个旧应用程序,因此   mysql而不是mysqli。假设我   可以转换它。

恕我直言我不认为使用MYSQL与缓慢有任何关系,从我自己的研究来看,MYSQLi与MYSQL的速度没有太大提升。现实世界的测试并没有表明它是一个重要的性能驱动因素。我老实说我的所有应用都坚持使用MYSQL。

答案 3 :(得分:1)

只需使用SQL

SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1