在同一个MySQL服务器上查询两个(或更多)数据库是否有任何性能损失,而这些数据库是否合并为一个?
背景,我继承了对Web应用程序的维护,该应用程序将其数据拆分为在同一服务器上运行的三个不同数据库,一个用于内容,一个用于用户和组信息,一个用于用户生成的数据。这很方便,例如它可以轻松设置权限,用户数据有些敏感,因此不需要知道的人不应该访问它。但是,该应用程序的主要功能之一是为内容上的用户或组提供进度报告。这意味着它必须跨两个或更多数据库进行查询才能生成报告。
这样做是否有任何表现损失?
答案 0 :(得分:18)
没有。在MySQL中,“数据库”本质上只是对数据存储或查询方式没有影响的目录。
从查询执行的角度来看,查询不同数据库中的两个表与查询同一个数据库中的两个表是一样的。
答案 1 :(得分:3)
如果您尝试对每个数据库中的数据使用多个select语句,这只会引入一个明显的问题。最好使用一些外键,然后使用单个连接查询来获取用户的数据及其相关的用户内容。您可以在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;