2015-05-12 78 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