在SQL Server中存储可变数量列的最有效方法是什么?

时间:2018-02-16 16:09:23

标签: sql sql-server sql-server-2008

在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

0 个答案:

没有答案