我有一个表,其中包含大约2500行,用于单个用户ID。对于每个用户ID,将存在相同数量的行。如果用户数量增加,那么恐怕行数会很大。
那么请你建议我做什么? 我应该为不同的用户使用不同的表,还是为所有用户使用单个表。另外,在一个表中可以存在多少行/列的最大限制?
我的数据库看起来像下面的结构:
用户1的
id ---- col1
1 ---- value1
2 ---- value2
..............
2500 ----价值2500
用户2的
id ---- col1 ...
1 ---- value1
2 ---- value2
..............
2500 ----价值2500
同样,它将继续假设100万用户
那么,我应该为每个用户创建单独的表,还是应该创建包含所有记录的1个表。
答案 0 :(得分:5)
按原样使用表格。 MySQL可以轻松处理数十亿或数行的数据。使用一些不错的索引,你的表现也应该非常好。
这并不是说你不应该确保你有良好的桌面设计,但你也不应该担心处理你认为可能是大量数据的东西 - 实际上,数据集的海洋可能会下降。
列数确实没有太大差异,行大小可以增加硬盘驱动器访问它们的时间(根据我读过的一些文章),但与此同时,你必须有一个非常大的行才能真正注意到数千个查询的差异。
至于良好的结构,它实际上取决于你将如何使用它。如果您要执行许多不同的聚合函数,请确保您有一个允许它的表。如果您只需要几个特定的查询,最好创建一个报表特定的表,每天汇总数据一次。
编辑:有关行数实际限制的说明:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
MyISAM存储引擎每个表支持2 ^ 32行,但您可以使用--with-big-tables选项构建MySQL,使其每个表最多支持2 ^ 64行。
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
InnoDB存储引擎似乎没有行数限制,但它的表大小限制为64 TB。这适合多少行取决于每行的大小。