2010-07-11 72 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; 
相关问题