我目前在 MYSQL 数据库中有 26 个表。我的老板希望我在有新客户时重新创建这 26 个表,并在这些新表上附加某种客户缩写。例如,有 company1~system~users 和 company2~system~users 等等。
我宁愿只在数据库中添加一个表来跟踪我们的客户,使用自动递增的 11 位 INT 主键并在其他 26 个表中引用它,这样我们就不会弄乱数据库如果有 200 个客户端,则为 4000 个表。
我认为他担心的是,如果我们采用我宁愿采用的方法,MYSQL 执行查询的时间将明显延长,因为每个客户端拥有 2000 到 5000 条记录之间的任何地方都将共享表。因此,例如,从具有 1,500,000 条记录的名为 system~users 的表中搜索属于 company1 的用户要比从具有 2,000 条记录的名为 company1~system~users 的表中搜索用户慢。我认为如果我们拥有的每个客户端都有 26 组表(即每个客户端 26 个),那么 MYSQL 搜索实际上会更慢。
哪种方法实际上更慢?
最佳答案
为什么不只创建一个数据库或每个公司?然后在构造查询时甚至不需要构造动态表名。这是一个更合理的解决方案。更重要的是,它会使客户端数据更加分离,因此任何相互依赖性可能会更加明显。
当应用程序层也是独立的时,上述方法效果最好,因此您可以为每个实例提供一组不同的数据库登录凭据。
如果不是这种情况,它可能会正常工作,也可能会很尴尬,或者还不错,具体取决于您的安装、您使用的平台等等。
附加公司名称是一种技巧,但我想它可以发挥作用。
在记录中记录客户 ID 也是一种常见的方法。从性能的角度来看,我不必担心 150 万条记录,只要表被适本地索引即可。这不是大量的记录。此外,公司 ID 标准应该能很好地限制结果。
关于sql - MYSQL,使用唯一表名 VS 使用 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618792/