我们今天的设置采用 XML 数据并将该数据拆分到 SQL 中的多个表中。这样做的唯一好处是报告很好。然而,每当我们想要检索数据时,我们都必须重新绑定(bind)数百个表中的所有数据以重新导出 XML。每个 XML 可能有几 MB 到几 GB。
讽刺的是,我们几乎从不运行报告,但确实经常检索/保存数据。由于将其拆分/编译为多个表,因此保存和检索效率都不是很高。
由于数据以 XML 形式出现,我正在考虑更新我们的方法并将 XML 作为大 BLOB 保存到表中。那就这么简单了。
现在的问题是报告 - 如果无法索引 blob,我想知道我可以选择哪些选项来尽可能高效地运行报告。
数据库大小为 100 GB。
我不是 DBA(我是 C# 人员) - 我刚刚在工作中担任这个职位,所以我能想到的唯一方法是使用 C# 来完成它 - 将每个 BLOB 构建为 XML然后用C#查询XML数据。然而,这似乎效率非常低。也许 SQL 中的 XQuery 更好?!尽管不是 DBA,但我非常乐意接受任何编程 (C#/VB) 或 SQL 建议。
最佳答案
您可以将数据保存在单个 XML-type column 中在您的数据库中,然后通过 XQuery 访问数据。
XQuery 对于我个人来说有点繁琐,但我发现这个提示列表非常有帮助:
http://www.jackdonnell.com/?p=266
优点是您只保留数据的一个版本,因此更新和读取速度很快,除了 XML 解析位(但这可能取决于您的数据量)。从 C# 将数据导入数据库非常简单,因为您可以将 XML 映射到相应的 SqlDbType
。
关于SQL - 使用 BLOBS 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673531/