如何存储和查询具有不同结构的数据

时间:2017-05-05 21:04:46

标签: sql-server schema azure-sql-database azure-cosmosdb

我有一个项目,我需要有多个人员列表。一个列表可能包括名字,姓氏,电子邮件地址,而另一个列表将存储姓氏,电子邮件,生日,公司,帐号等。在其他工作中,每个列表具有不同的结构。允许该项目的用户为列表中的人创建无限数量的列表和最多100个属性。

此外,用户可以查询仅根据属性值返回列表中一部分人的筛选列表。每个属性都可以是文本,数字或日期。

在我的旧系统中,我有两张桌子。

  • 列表
  • ListPeople(最多包含1000万条记录)

在ListPeople表中,我将有100列:

  • value1 nvarchar(255)
  • value2 nvarchar(255)
  • ...

问题在于,当他们构建查询来过滤数据时,每个查询都会被强制进行表扫描,因为我没有为每一列编制索引。

处理此问题的最佳方法是什么?我应该保留我的架构并向所有列添加索引(对此表进行大量插入/更新)还是以不同的方式进行设计?也许使用EAV(希望不是)?另一个想法(因为这将在Azure中)是具有List表和ListPeople表,但是也使用DocumentDB No-SQL数据库来存储人的属性。我不确定这是否是最佳方法。

0 个答案:

没有答案