用一个连接从两个不同的数据库获取数据,这是一种有效的方法吗?


Getting data from two different databases with single connection, is this a valid way

当我第一次读到mysqli_connect()时,我认为我们只能在作为参数传递给mysqli_connect()的数据库上执行sql操作,但今天我只是尝试了一下,是否有可能在我的本地服务器上对两个不同数据库的表执行连接操作。因此,我创建了另一个数据库(db_2)。令人惊讶的是,它起作用了。

我试着在谷歌上搜索这个话题,我发现了与mysql_connect()mysql_select_db()相关的非常古老的答案。看看我的代码

$host="localhost";
$username="root";
$password="";
$db_name="db_1";  
$con = mysqli_connect($host,$username,$password,$db_name); 
$sql_query = "SELECT name FROM db_1.user as u inner join
                       db_2.user as us ON us.id = u.id
                       WHERE u.id = 102 LIMIT 1";
$result = mysqli_query($con,$sql_query);
$row = mysqli_fetch_array($result, MYSQL_ASSOC);
echo $row['name'];

最初我认为我们应该建立两个连接到两个数据库,像这样使用两个数据库

 $con1 = mysqli_connect($host,$username,$password,"db_1"); 
 $con2 = mysqli_connect($host,$username,$password,"db_2"); 

但是只使用单连接,可以很容易地在两个数据库之间获取数据。

我的问题是这是加入两个数据库的正确方式吗?我知道PDO是更好的方法,但出于好奇,我只是想知道。

还有什么限制吗?当我有大量数据时,这是首选的方法吗?

当你在两个数据库之间抓取数据时,它真的会降低性能吗?非常感谢任何帮助。由于

如果两个数据库都在同一台服务器上,并且您正在使用的用户可以访问。您应该能够像这样组合一个查询…

SELECT db1.table1.column1, db2.table2.column2 FROM db1.table1 JOIN db2.table2 ON db1.table1.column1 = db2.table2.column2;
相关文章: