我们的数据库中有一个表,它在其中一列中存储 XML。XML 在通过 Web 服务响应接收的一组 3 种不同 XML 格式中始终采用完全相同的格式。我们需要非常频繁地在此表(以及 XML 字段内部)中查找信息。这是对 XML 数据类型的不当使用吗?
我的建议是为每个不同的 XML 结构创建单独的表,因为我们只谈论 3 个,增长率可能为每年一个新表。
我们的数据库中有一个表,它在其中一列中存储 XML。XML 在通过 Web 服务响应接收的一组 3 种不同 XML 格式中始终采用完全相同的格式。我们需要非常频繁地在此表(以及 XML 字段内部)中查找信息。这是对 XML 数据类型的不当使用吗?
我的建议是为每个不同的 XML 结构创建单独的表,因为我们只谈论 3 个,增长率可能为每年一个新表。
我想最终这是一个偏好问题,但这里有一些我不喜欢在 XML 字段中存储这样的数据的原因:
在 TSQL 中针对 XML 编写查询很慢。对于少量数据可能还不错,但是您肯定会在大量数据时注意到它。
有时,处理 XML blob 需要特殊的逻辑。如果您将 XML 直接存储在 SQL 中,那么您会发现自己完全重复了该逻辑。我以前在一份工作中看到过这种情况,将 XML 写入字段的人早已不在,每个人都想知道如何准确地使用它。有时元素存在,有时不存在,等等。
与(2)类似,我认为它破坏了数据库的纯度。就像很多人建议不要在字段中存储 HTML 一样,我建议不要存储原始 XML。
但是尽管有这三点……它可以工作,而且 TSQL 绝对支持针对它的查询。
你阅读的领域多于写作的领域吗?
您希望在您最不常做的任何步骤或不涉及用户的步骤上进行转换。