假设我在同一台物理服务器上有两个独立的数据库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:跨数据库连接与同一数据库中的连接相比,是否有重大性能损失?不。看起来一样快。
谢谢大家的回复。
答案 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