在两个数据库之间共享MySQL表

3
我想知道我的方法是否不正确
我有一个简单的网站,您可以注册。它有一个名为USERS的主数据库,其中包含一个列出所有用户的表格,然后对于每个新用户,都会生成一个名为DB1,DB2,...,DBn的新数据库。我这样做的原因是因为每个用户存储了大量信息,我认为这是更好的方法。但是,现在我遇到了一个问题,即用户数据库需要访问USERS数据库中的表格(用于外键),我无法解决该问题。
我承认我没有太多使用MySQL的经验,因此为每个用户创建新数据库可能是一个非常糟糕的决定。情况如何? MySQL的效率如何?例如,我可以为(假设)100,000个用户创建一个列表,每个用户都有100个条目,例如他们上传的图片。
谢谢
3个回答

7
我也在研究同样的问题。我找到的解决方案是: http://drupal.org/node/37075 您可以在每个数据库中创建代表常见用户表的VIEW。
mysql> use DB1;
mysql> CREATE VIEW users AS
mysql> SELECT *
mysql> FROM USERS.users

3
这是一个非常糟糕的设计决策。你需要创建一个包含所有应用程序表的单个数据库。在你的例子中,你需要创建一个名为MyProject的数据库,并在其中创建一个名为User的用户表,该表包含您所有的用户条目 - 对于现代硬件来说,100,000条目是一个很小的数据库,所以不用担心。然后,您将创建一个名为UserPhoto的表,其中包含对User主键的引用以及其他所需的数据。

转换起来不会太困难。只是出于好奇,表的大小是否会影响搜索速度?例如,如果我有一个用于照片评论的表,假设有100,000个用户,每个用户有1000张照片,每张照片有100条评论,那么在查找特定子集时需要搜索100,000 * 1000 * 100个条目。干杯! - puk
表格大小确实会影响搜索速度。但索引的作用是使得每个查询不必扫描所有100,0001000100行数据。它使用某种方法(取决于实现)以显著较低的成本在数据上执行查找。对于现代数据库来说,100,000/1000/100结构相对较小。通过正确放置索引,您将能够正常运行。 - Bleaourgh

1

您可以使用语法在数据库之间进行查询

db_name.table_name.table_field

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接