sql - MYSQL,使用唯一表名 VS 使用 id

标签 sql mysql database-design data-modeling

我目前在 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/

相关文章:

mysql - MIN 和 MAX 字符串

database - 关系数据库中难于分层的数据

sql-server,SQL 查询中的 IF 语句

mysql自然排序给定数据

mysql - 纠正 MySQL JOIN 格式以避免嵌套 SELECT

database - 选择一种方法来存储用户配置文件?

数据库设计

php - 在格式为 json 的字段中选择多个 ID

mysql - Mysql中简单查询速度慢

mysql - 删除MySQL中的重复数据