连接来自不同数据库的表的性能影响

时间:2010-07-15 20:03:44

标签: mysql database join cross-database

我有一个使用名为“site1”的数据库的网站。我打算将另一个站点放在同一台服务器上,该站点也将使用“site1”中的一些表。

我应该使用三个不同的数据库,如“site1”(对于第一个站点特定数据),“site2”(对于第二个站点特定数据)和“general”(对于常见表)。其中将存在数据库general和site1和site2之间的连接语句。或者我应该将所有表放在一个数据库中吗?

哪种方法最好? 每种情况下表现如何不同? 我正在使用MySQL。那么情况尤其如此呢?

提前致谢...

2 个答案:

答案 0 :(得分:10)

从性能的角度来看,不会有任何差异。只需保留您的索引,您就不会注意到您使用的是单个数据库还是多个数据库。

除了表现之外,我还能想到两个小问题: 1.您不能在DB之间拥有外键。 2.根据数据库的使用情况或基于应用程序对数据库中的表进行分区可以帮助您以简单的方式管理权限。

答案 1 :(得分:3)

我可以从最近的个人经历中说出来。我在一些PHP代码中有一些旧的mysql查询,这些查询在相对较小的数据库中运行良好,但随着它的增长,查询变得越来越慢。

我有freeradius在自己的数据库中运行mysql以及我编写的另一个管理php应用程序。 freeradius表是> 150万行。我试图将我的应用程序数据库中的表连接到freeradius数据库。我可以肯定地说150万行太多了。运行一些查询完全锁定了我的应用程序。我最终不得不重新编写部分php应用程序来做不同的事情(即不加入来自不同数据库的2个表)。我还在一些关键字段上索引了半径记帐表并优化了一些查询(mysql EXPLAIN语句很有帮助)。现在事情变得更快了。

除非真的有必要,否则我将在未来加入来自不同数据库的2个表格犹豫不决。