超过2000列的Mysql表

超过2000列的Mysql表,mysql,amazon-dynamodb,Mysql,Amazon Dynamodb,我有一个每小时一次的表来存储商店中的交通/人员、行动/人员方向、参观区域等,结构如下: 密钥将是storeid、日期、时间。列最多可以有2000、3000等,属于我们要收集的信息的数量。据我所知,MySQL的列数有限(InnoDB表),我不想转换成MYISAM,尽管它最多可以有2000列。 问题是:表结构良好,或者我需要使用其他方式来存储数据。 例如: 1.将此(待定数据时间)拆分为2个表。 2.或者我必须使用其他数据库服务器,MS SQL(也是有限列)或Amazon DynamoDB,我的要

我有一个每小时一次的表来存储商店中的交通/人员、行动/人员方向、参观区域等,结构如下:

密钥将是storeid、日期、时间。列最多可以有2000、3000等,属于我们要收集的信息的数量。据我所知,MySQL的列数有限(InnoDB表),我不想转换成MYISAM,尽管它最多可以有2000列。 问题是:表结构良好,或者我需要使用其他方式来存储数据。 例如:
1.将此(待定数据时间)拆分为2个表。
2.或者我必须使用其他数据库服务器,MS SQL(也是有限列)或Amazon DynamoDB,我的要求是无限列表。

3. ...

这种表结构通常非常糟糕;更好的解决方案是使用另一个
区域
表,每个区域都有行;和一个
store\u areas\u stats
表,其中有:
store\u id
(参考存储表)、
area\u id
(参考区域表)和
area\u count
(?)和
area\u time
(表示您为每个存储区域存储的数字)


编辑:看起来您显示的表本身更像是一个存储统计表;我上面建议的
store\u areas\u stats
应该引用该表,而不是stores表;这意味着您可能应该在所显示的表上放置一个主键(自动递增)。

那么您每次添加新的
区域时都要添加列?您应该真正了解规范化并重新建模数据库。所有这些列都应该是行(如
storeid
time
)。当您选择很长的日期范围(例如1年)时,重点是选择速度。那么速度会非常慢。无论如何,我有上千个商店,所以数据真的很大速度差可能没有你想象的那么明显;甚至可以像这样规范化表结构,从而加快查询速度。