2009-11-04 97 views
9

假設我在同一物理服務器上有兩個單獨的數據庫X和Y.PHP Mysql跨數據庫連接

我查詢的所有當前跑出去十

我發現我有一個表Y中,我想提供給X的連接。

因此......現在我保留X和Y都需要X和Y的一張表的副本,但Y中的數據不斷變化,因此副本很快就會過時。對於這個應用程序不是至關重要的,但對於另一個我現在正在設計的應用程序來說,這是不行的

X,現在只需要在Y.

讀訪問表中是否有有效的方式做到跨兩個數據庫連接?

我更喜歡mysql解決方案,而不是在php中打開多個數據庫連接。

謝謝。

編輯:那麼,什麼成爲這些行?:

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

是的..這是一箇舊的應用程序,因此,MySQL的,而不是庫MySQLi。假設我可以轉換它。

編輯2:所以,我沒有指定database_name.table_name,只是指定table_name我得到什麼被選中,我在哪裏指定database.table_name我得到我要求的..對吧?是的。作品。

EDIT3:通過在同一數據庫中進行跨數據庫連接與連接,是否有任何顯着的性能影響?不。看起來一樣快。

謝謝大家的回覆。

+0

這些行保持不變。您仍然必須使用mysql_select_db(),因爲在執行查詢之前,mysql需要一個活動的db/schema。 – longneck 2009-11-04 17:34:47

+1

mysql_select_db()實際上不是必需的。它只是設置活動的默認數據庫,如果你指定'db.table',你可以不使用它。 – Jakub 2009-11-04 17:38:15

回答

2

編輯:那麼成爲這些線路?:的

$康恩= 的mysql_connect( '本地主機', '用戶名',」密碼'); @mysql_select_db('database_name',$ conn)

mysql_select_db是可選的。因爲它只是選擇使用的活動分貝。 http://us3.php.net/manual/en/function.mysql-select-db.php

是的..這是一箇舊的應用程序,從而的在 改爲mysql的庫MySQLi。假設我可以將其轉換爲 。

恕我直言我不認爲使用MYSQL與緩慢有關,從我自己的研究來看,MYSQLi與MYSQL沒有太大的速度提升。真實世界的測試並不表明這是一個很大的性能驅動因素。我誠實地堅持MYSQL爲我所有的應用程序。

+1

我所有的新應用程序都使用mysqli和預準備語句。重複的東西更快,其餘的差不多。 – 2009-11-04 17:36:25

13

你有別名錶中的其他數據庫:

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

+1:使用表別名是一個好習慣 – 2009-11-04 17:23:40

4

如果2個數據庫是在同一臺服務器上,你可以簡單地限定表在連接查詢的數據庫名稱。

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

只需使用SQL

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