我有一些数据哪些列是动态的,列数据的数量可以随时增加/减少。所以我打算将它们按行存储而不是列格式。将列数据作为行存储的最佳方式MS SQL
我已经放置了列的主表,它指出了列使用的数据类型。我画下主表,供您参考
CID Name Type
1 Speed Double
2 Input1 Bool
3 Message String
.......
.......
现在我想到两个方法来存储这个动态列数据 第一种方式是
CID Data_bool Data_String Data_Double
1 NULL NULL 12
2 True NULL NULL
3 NULL test NULL
1 NULL NULL 5
1 NULL NULL 15
方式二是有一个一般性的VARCHAR列每个值作为字符串存储在那里,所以它看起来像
CID Datas
1 12
2 True
3 test
1 5
1 15
如果你看一下视图的数据库规范化点,则第二种方式似乎很好。但是我认为它会在数据检索中产生问题。因为我想过滤数据,如“速度> 10”。所以,如果我去第二种方式(我将所有的价值存储为字符串),我认为表达式将需要更多的时间来评估 如果我第一次的表达方式,然后首先我需要确定我需要评估的列表达。防爆。为表达速度> 10,首先我要检查速度是哪种数据类型(字符串,布尔等),然后再次执行“data_double> 10”的表达式
两者都有其自身的缺点。有人可以指出,未来哪种方式可以减少我的头痛。请记住,这张表将在后期增加数百万条记录。
我很欣赏你的观点和时间。谢谢。
经过思考所有的可能性,我决定以我的第一种方式去。我知道它没有正常化,但我认为如果我进行正常化,那么表现将是一个大问题。我确定(带着沉重的心情)HD空间,而不是优化所有查询以获得更快的性能。该表是所有计算报告的核心。 – user867198