SQL - 使用 BLOBS 查询

标签 sql sql-server

我们今天的设置采用 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/

相关文章:

mysql - 如何在sql中选择特定的表?

mysql - 如何在 MySQL 中排除周末和节假日日期并查找预期日期?

php - 使用 MySQL 查询进行半复杂的数学运算

sql-server - 在 SQL Server 数据库中记录表和列的含义的好方法是什么?

c# - 当用户使用数据时,在 SQL 中锁定行的正确方法是什么?

Sql获取sql server中特定数据库的最新完整备份文件

sql - 用户拥有数据库固定角色意味着什么?

sql - 如何在 SQL Server 中查找列是否包含 '%'

python - 连接到 Linux 上的 MSSQL Server 2008

sql - 'IN'可以用在case语句中吗?