Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL,使用唯一表名与使用ID_Sql_Mysql_Database Design_Data Modeling - Fatal编程技术网

MYSQL,使用唯一表名与使用ID

MYSQL,使用唯一表名与使用ID,sql,mysql,database-design,data-modeling,Sql,Mysql,Database Design,Data Modeling,我目前在MYSQL数据库中有26个表。我的老板希望我在有新客户机时重新创建这26个表,并在这些新表中附加某种形式的客户机缩写。例如,有公司1~系统~用户和公司2~系统~用户等等 我宁愿只向数据库中添加一个表来跟踪我们的客户机,使用一个自动递增的11位INT主键,并在其他26个表中引用它,这样,如果有200个客户机,我们就不会用4000个表来混乱数据库 我想他担心的是,如果我们采用我更愿意采用的方法,MYSQL执行查询的时间会明显延长,因为每个记录在2000到5000条之间的客户机将共享表。因此,

我目前在MYSQL数据库中有26个表。我的老板希望我在有新客户机时重新创建这26个表,并在这些新表中附加某种形式的客户机缩写。例如,有公司1~系统~用户和公司2~系统~用户等等

我宁愿只向数据库中添加一个表来跟踪我们的客户机,使用一个自动递增的11位INT主键,并在其他26个表中引用它,这样,如果有200个客户机,我们就不会用4000个表来混乱数据库

我想他担心的是,如果我们采用我更愿意采用的方法,MYSQL执行查询的时间会明显延长,因为每个记录在2000到5000条之间的客户机将共享表。因此,例如,从一个名为system~users且记录数为1500000的表中搜索属于company1的用户要比从一个名为company1~system~users且记录数为2000的表中搜索用户慢。我认为,如果每个客户机都有26组表(即每个客户机26组),MYSQL的搜索速度实际上会慢一些


哪种方法实际上更慢?

如果您在公司标识符上有适当的索引,性能应该不会有问题


至于将ID附加到表名,为什么不考虑创建单独的数据库实例呢?我认为更改表名可能需要额外的编码(以便在任何查询中动态生成表名),使用不同的实例似乎很简单。

如果您在公司标识符上有适当的索引,性能应该不会有问题


至于将ID附加到表名,为什么不考虑创建单独的数据库实例呢?我认为更改表名可能需要额外的编码(在任何查询中动态生成表名),使用不同的实例似乎很简单。

为什么不创建一个数据库或每个公司?在构造查询时,甚至不需要构造动态表名。这是一个更合理的解决方案。更重要的是,它将使客户机数据更加分离,因此任何相互依赖性都可能更加明显

当应用程序层也是独立的,因此您可以为每个实例提供一组不同的数据库登录凭据时,上述方法效果最佳

如果不是这样的话,它可能工作得很好,也可能很尴尬,或者很好,这取决于你的安装、你使用的平台等等

加上一个公司名称是一种黑客行为,但我想它可以发挥作用


在记录中拥有客户机ID也是一种常见的方法。从性能的角度来看,我不必担心150万条记录,只要这些表被适当地索引了。这不是一个巨大的记录量。另外,公司ID标准应该可以很好地限制结果。

为什么不创建一个数据库或每个公司呢?在构造查询时,甚至不需要构造动态表名。这是一个更合理的解决方案。更重要的是,它将使客户机数据更加分离,因此任何相互依赖性都可能更加明显

当应用程序层也是独立的,因此您可以为每个实例提供一组不同的数据库登录凭据时,上述方法效果最佳

如果不是这样的话,它可能工作得很好,也可能很尴尬,或者很好,这取决于你的安装、你使用的平台等等

加上一个公司名称是一种黑客行为,但我想它可以发挥作用


在记录中拥有客户机ID也是一种常见的方法。从性能的角度来看,我不必担心150万条记录,只要这些表被适当地索引了。这不是一个巨大的记录量。加上公司ID标准应该可以很好地限制结果。

200个客户*5000条记录[在任何给定的表中]按数据库标准来说都很小。 如果您将客户机id添加为大多数索引的第一个键,那么您建议的方案不应导致任何明显的性能下降


然而,出于其他原因,将客户的数据分开可能会很有趣。如果这对应用程序有意义,您可以在单独的数据库中处理每个不同客户机的数据。

200个客户机*5000条记录[在任何给定的表中]按数据库标准来说都很小。 如果您将客户机id添加为大多数索引的第一个键,那么您建议的方案不应导致任何明显的性能下降


然而,出于其他原因,将客户的数据分开可能会很有趣。如果这对应用程序有意义,您可以在单独的数据库中处理每个不同客户的数据。

将所有客户的数据保存在同一组表中,直到您有充分的理由这样做

从上面我了解到,您的数据非常小,因此可以放入ram中;这使得性能调整在实践中变得不必要,所以您不会关心索引集群之类的事情


做最简单的事情。只需将它们保存在一组表中。

将所有客户的数据保存在同一组表中,直到您有充分的理由这样做

从上面我了解到,您的数据非常小,因此可以放入ram中;这使得性能调整在实践中变得不必要,所以您不会关心索引集群之类的事情


做最简单的事情。把它们放在一张桌子里。

谢谢大家提出的精彩而有益的建议。从大家的普遍共识来看,似乎我应该将每个客户机的表集分离到他们自己的数据库中,或者允许客户机在一组表中共享他们的信息,这些表具有适当的索引和公司标识符

谢谢大家的支持