2010-07-11 73 views
11

有來自同一個MySQL服務器上查詢了兩個(或多個)數據庫的任何性能損失,相比於如果這些數據庫已被合併成一個?在同一臺服務器上查詢兩個mysql數據庫的性能?

背景,我繼承維修過其將其數據轉換成同一個服務器上運行三個不同的數據庫,一個用來內容,一個用於用戶和組信息,一個用於用戶生成的數據的網絡應用程序。這很方便,例如它可以很容易地設置權限,用戶數據有點敏感,所以不需要知道的人不應該有權訪問它。但是,該應用程序的主要功能之一是爲內容上的用戶或組提供進度報告。這意味着它必須跨兩個或多個數據庫進行查詢才能生成報告。

有沒有在性能上做這樣的損失?

+0

不,我知道的,沒有。 – 2010-07-11 18:19:44

+0

不,但是請檢查JOIN是否在類似的數據字段類型上執行。類型不匹配會在運行中重新進行,從而導致嚴重的性能損失。這顯然不限於跨數據庫查詢,但在處理由不同團隊管理的數據庫時,我們會不斷遇到這些不匹配。 – 2015-12-07 18:22:42

回答

17

號在MySQL,「數據庫」是本質上只是這對數據被存儲或查詢的方式沒有影響目錄。

查詢在不同數據庫中的兩個表是與在同一分貝查詢兩個表,從查詢執行的角度來看。

+1

我接受這個作爲正確的答案,因爲它直接回答我的問題。然而我覺得斯蒂芬的答案也是有智慧的。 – Leon 2010-07-12 08:41:19

+0

恩,謝謝! – Stephen 2010-07-12 21:08:36

3

如果你想使用的每個數據庫中的數據的多個選擇語句這將只介紹一個突出的問題。最好使用一些外鍵,然後使用單個連接查詢來獲取用戶的數據及其相關的用戶內容。您可以在select join語句中的表上爲模式名添加前綴。

例子將是與此類似:

SELECT a.user, b.user_content 
    FROM database1.table1 AS a 
    LEFT JOIN database2.table2 AS b 
     ON a.user = b.user_id; 
相關問題