Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 使用多个表而不是一个大表?_Mysql_Database_Innodb - Fatal编程技术网

Mysql 使用多个表而不是一个大表?

Mysql 使用多个表而不是一个大表?,mysql,database,innodb,Mysql,Database,Innodb,在使用InnboDB和MySQL时,我将大表拆分为多个小表,这有优势还是劣势? 当然,我不是说拆分实际的innoDB文件,我只是想知道当我使用多个表时会发生什么 情况: 我有一个包含数百万行(项目)的大表,它们被分类(列“category”)。 现在,我正在考虑为每个类别使用一个单独的表。 在任何保证的情况下,我都不需要跨多个表的数据。一般来说,如果您的表彼此不相关,那么它们应该位于单独的表中,而不是一个综合表中 但是,如果它们是相关的,那么它们实际上应该位于一个表中。您可以通过多种方式管理大型

在使用InnboDB和MySQL时,我将大表拆分为多个小表,这有优势还是劣势? 当然,我不是说拆分实际的innoDB文件,我只是想知道当我使用多个表时会发生什么

情况: 我有一个包含数百万行(项目)的大表,它们被分类(列“category”)。 现在,我正在考虑为每个类别使用一个单独的表。
在任何保证的情况下,我都不需要跨多个表的数据。

一般来说,如果您的表彼此不相关,那么它们应该位于单独的表中,而不是一个综合表中

但是,如果它们是相关的,那么它们实际上应该位于一个表中。您可以通过多种方式管理大型表的性能。我建议你看看它是否长得太大而开始引起问题

然而,数百万行并不像您所说的那样是一个“真正的大表”,我们有许多表有数千万行,甚至有一些表有数亿行,而且它们的性能很好,这要感谢cleaver索引、分区和读取副本的混合

编辑1-回应评论:

在键值对中的每个键上创建动态表,正如您正确地说的,这是不寻常的、丑陋的,而且是非常错误的——您正在破坏RDBMS的关系部分。 我无法具体说明以下内容,因为这个问题仍然缺少您的模式和您想要实现的目标的详细信息——不过我觉得我掌握的足够多,可以编辑我的原始答案

在同一个数据库中划分一个表和在另一个数据库中创建一个新表是完全不同的。如果您询问性能,一般来说,如果您有足够的资源(如用于索引的内存和底层数据存储上的IO)并且没有瓶颈,则它们的性能应该相同(即1000gb数据库中的一个新表和0gb数据库中的一个新表)

我真的不明白你为什么想要创建动态表
(“表{category}”),或将值/类别存储在文本文件中。听起来你真的需要1-N关系和加入。

想想谢谢你的评论。我的例子并没有反映现实生活中的情景1:1,我只是想打个比方。在我的RL场景中,创建单独的表将需要动态表创建,这似乎是不寻常和丑陋的。我有一个表,有两列“value”和“category”。。因此,我正在考虑为每个“类别”创建一个新表,但我不知道这样做是否有任何好处(性能)。。将所有数据保存在一个表中会更容易、更优雅,但由于数据不相关,我可以使用多个表,而不会出现逻辑方面的问题。@Benedik B这是一个键值对表吗?如果你能提供更多的信息,比如模式和你的目标,我可能会扩展我的回答。谢谢。我认为您可以将其称为键/值表(“值”和“类别”)。现在,我可以创建一个只包含“value”列的动态表“table_{category}”,而不是“category”列。我甚至想用文本文件代替MySQL。我会每隔几天(但很多)填写一行,每周阅读几次表(总是整个表,而不是其中的一部分)。顺便说一下:假设我有一个1000GB的innoDB数据库。此1000GB数据库中的新表是否比新的0GB innoDB数据库中的新表执行速度慢?