我的需求如下:
- 需要能够动态添加任何数据类型的用户自定义字段
- 需要能够快速查询UDF
- 需要能够根据数据类型在UDF上进行计算
- 需要能够根据数据类型对UDF进行排序
其他信息:
- 我主要寻求性能优化
- 可能会有几百万个主记录附带UDF数据
- 上次检查时,我们当前的数据库中有超过5000万条UDF记录
- 大多数情况下,一个UDF只附加在一小部分主记录上,而不是全部主记录
- UDF没有连接或用作键。它们只是用于查询或报告的数据。
选项:
- 创建一个大表,包括StringValue1、StringValue2... IntValue1、IntValue2等列。我不喜欢这个想法,但如果有人能告诉我这比其他想法更好,以及为什么更好,我会考虑它。
- 创建一个动态表,在需要时按需添加新列。我也不喜欢这个想法,因为我觉得除非你为每个列建立索引,否则性能会很慢。
- 创建一个包含UDFName、UDFDataType和Value的单一表。当添加新UDF时,生成一个视图,仅提取该数据并将其解析为指定类型。不符合解析标准的项返回NULL。
- 创建多个UDF表,每个表对应一个数据类型。因此,我们会有UDFStrings、UDFDates等表。可能会像#2一样自动生成视图以便在添加新字段时使用。
- XML数据类型?我以前没有使用过,但见过它们的提及。不确定它们是否能够给我想要的结果,特别是在性能方面。
- 其他的办法?