我正在寻找一些关于如何在 SQL Server 2012 数据库中存储“数组”和“字典”类型信息的建议。到目前为止,我一直在使用 xml 类型,因为我可以轻松查询,并且可以简单地表示它们,例如:
<Array><i>1</i><i>2</i><i>3</i></Array>
<Dictionary><Item1>Value1</Item1><Item2>Value2</Item2></Dictionary>
到目前为止,我认为 xml 数据类型会从 PAGE 压缩中受益,但今天我意识到事实并非如此。这是一个相当大的问题,因为数据库每天将存储数十万条这样的记录,而且似乎大部分数据都是这种未压缩的 XML。
所以我正在寻找一种解决方法。我想我可以将这些数据制成表格。例如,一个数据字典表:
[ID] bigint PK,
[OwnerID] bigint,
[Name] varchar(32),
[Value] varchar(32)
还有一个数组:
[OwnerID] bigint PK
[Index] int PK
[Value] varchar(32)
这会起作用,但我担心这种方法有多“可查询”——即“WHERE ObjectID 的 X 字典正确 = Y”。我可以为此编写一个标量函数,但我知道这会导致性能问题。
我已经阅读了这个特定问题,但普遍的共识似乎是“使用 xml 列,不要担心它”,但考虑到我需要允许的数据量,我认为这不是对我来说是一个选择。
任何建议或见解将不胜感激。