在MS-SQL中存储可变数量的列的最有效方法是什么?
我需要将大量(数百万)记录存储到Microsoft SQL服务器中(通过c#)。大多数列都是标准列,但某些用户组需要添加自己的自定义列,并在其中记录数据。 每个自定义列字段中的数据不会很大,但具有一组自定义列的记录数将为数百万。
我不知道这些列可能是什么(在名称或数据类型方面),但我需要尽可能有效地根据这些列提取报告。
存储新变量列和数据的最有效方法是什么?
实体 - 属性 - 价值模型? Con:如果有大量自定义列(=大行数),效率会是多少?
额外的表格“CustomColumns”? 每次条目具有自定义列时,为每列存储columnName,Data,Datatype。 Con:具有大量记录的表,可能不是最有效的存储。
将每条记录的额外列序列化为单个字段 Con:基于自定义字段运行报表时,查找效率和存储过程会很复杂。
还有其他吗?
编辑:想想我可能会混淆选项(1)和(2):我的意思是,以下是最好的方法:
Entity (User Groups)
id | name | description
-- | ---- | ------------
1 | user group 1 | user group 1
2 | user group 2 | user group 2
Attribute
id | name | type | entityids (best way to do this for 2 user
-- | ---- | ---- | groups using same attribute?
1 | att1 | string | 1,2
2 | att2 | int | 2
3 | att3 | string | 1
4 | att4 | numeric | 2
5 | att5 | string | 1
Value
id | entityId| attributeId | value
-- | --------| ----------- | -----
1 | 1 | 1 | a
2 | 1 | 2 | 1
3 | 1 | 3 | b
4 | 1 | 3 | c
5 | 1 | 3 | d
6 | 1 | 3 | 75
7 | 1 | 5 | Inches