我目前在MYSQL数据库中有26个表。我的老板想让我在有新客户的时候重新创建这26个表,并在这些新表后附加某种客户的缩写。因此,例如有company1〜system_users和company2〜system_users,依此类推。
我宁愿只是在数据库中添加一个表来跟踪我们的客户,使用一个自动递增的11位INT主键并在其他26个表中引用它,因此,如果出现以下情况,我们就不会用4000个表弄乱数据库有200个客户。
我认为他担心的是,如果采用我希望使用的方法,则执行查询的MYSQL将会花费更长的时间,因为具有2000到5000条记录的客户端将共享表。因此,例如,从具有1,500,000条记录的system_users表中搜索属于company1的用户比从具有2,000条记录的company1〜system_users表中搜索用户要慢。我认为对于MYSQL,如果每个客户端都有26个表集(每个客户端26个表),搜索起来实际上会比较慢。
哪种方法实际上较慢?
为什么不创建数据库或每个公司呢?然后,在构造查询时甚至不需要构造动态表名。这是一个更为完善的解决方案。而且,这将使客户端数据更加分离,因此任何相互依赖关系都将更加明显。
当应用程序层也分开时,以上方法最有效,因此您可以为每个实例提供不同的数据库登录凭据集。
如果不是这种情况,则根据您的安装,所使用的平台等情况,它可能会正常工作,或者很尴尬或很好。
附加公司名称是很容易的事,但我想它可以正常工作。
在记录中具有客户ID也是一种常见的方法。从性能的角度来看,只要表格有适当的索引,我就不必担心有150万条记录。这不是大量的记录。再加上公司ID标准应该会很好地限制结果。