超过2000列的Mysql表
我有一个每小时一次的表来存储商店中的交通/人员、行动/人员方向、参观区域等,结构如下: 密钥将是storeid、日期、时间。列最多可以有2000、3000等,属于我们要收集的信息的数量。据我所知,MySQL的列数有限(InnoDB表),我不想转换成MYISAM,尽管它最多可以有2000列。 问题是:表结构良好,或者我需要使用其他方式来存储数据。 例如:超过2000列的Mysql表,mysql,amazon-dynamodb,Mysql,Amazon Dynamodb,我有一个每小时一次的表来存储商店中的交通/人员、行动/人员方向、参观区域等,结构如下: 密钥将是storeid、日期、时间。列最多可以有2000、3000等,属于我们要收集的信息的数量。据我所知,MySQL的列数有限(InnoDB表),我不想转换成MYISAM,尽管它最多可以有2000列。 问题是:表结构良好,或者我需要使用其他方式来存储数据。 例如: 1.将此(待定数据时间)拆分为2个表。 2.或者我必须使用其他数据库服务器,MS SQL(也是有限列)或Amazon DynamoDB,我的要
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年)时,重点是选择速度。那么速度会非常慢。无论如何,我有上千个商店,所以数据真的很大速度差可能没有你想象的那么明显;甚至可以像这样规范化表结构,从而加快查询速度。