2015-05-12 43 views
0

在我的服务器中,我有几个数据库(大约12个,每个数据库几个表)。问题是,在单个php类中,我需要在两个不同的数据库中执行两个查询。在优化的问题,就是它更快做使用多个mysqli对象或一个通用对象

一个通用的mysqli对象,并调用这两个查询就可以了:

$database = new mysqli('localhost', 'username', 'password'); #see, no database selected 

$query1 = "select * from database1.tableX";  
$res1 = $database->query($query1); 

$query2 = "select * from database2.tableY";  
$res2 = $database->query($query2); 

或者每个数据库

$database1 = new mysqli('localhost', 'username', 'password', 'database1'); 

$database2 = new mysqli('localhost', 'username', 'password', 'database2'); 

$query1 = "select * from tableX"; 
$res1 = $database1->query($query1); 

$query2 = "select * from tableY"; 
$res2 = $database2->query($query2); 

考虑我俩的mysqli型动物对象在同一台服务器上有更多的数据库;哪种解决方案更快?

回答

1

我认为第一个更好,所以你只用1个对象连接到数据库,给查询中的数据库继承。在第二个你使用2个对象,这将消耗更多的资源....但谈到服务器可能是一个具有大量recources的机器,这不会影响太多,在关闭连接时,对象被接受由垃圾收集器。

编辑1)。控制器mysqli,内部应该采取它需要的squema。所以我认为你不会看到速度上的差异。

+0

即使在这个对象,我会有我不会使用的数据库(如database3,database4 ...)? – Carlos2W

+0

你可以使用相同的对象并使用mysqli_select_db(mysqli $ link,string $ dbname)来选择另一个数据库作为第二个查询 – bugs2919

+0

它不会像在对象中那样拥有数据库,记住当你连接到mysql时有一个默认的模式,如果你做一个查询来删除你想要使用的数据库,就像“database3.table”那样不会影响速度。 – bugs2919