【问题标题】:SELECT XML fields with best performance in sql server在 sql server 中选择性能最佳的 XML 字段
【发布时间】:2011-12-12 05:31:58
【问题描述】:

什么是获得 SELECTing XML 字段的最佳性能的好解决方案?考虑一个有 100000 条记录的表。如果我选​​择所有表内容并创建一个表变量,然后在其上创建索引,然后在其上计算值?还是在我的 xml 字段上创建几个索引然后计算值?

如果有人有更好的解决方案,请说。

谢谢

【问题讨论】:

  • XML 是否有预先知道的固定模式?你想选择什么,你将如何编写 SELECT 命令(例如基于路径?)
  • 我有一个 XML 字段 采用特定格式 有一些值。我想根据我的字段值计算所有记录的一些值。例如 SUM 或 @ 987654322@

标签: sql sql-server xml performance sql-server-2008


【解决方案1】:

如果您只需要从 XML 中提取某些单个值,您还可以研究这种方法:

  • 定义一个存储函数,它将您的 XML 作为输入参数,并提取您需要从中提取的任何内容,并返回 INT 或 VARCHAR 或其他内容
  • 在调用此函数的基表(存储 XML 的位置)上定义一个计算的持久列

一旦您有了一个计算的、持久化的列,您就可以轻松地为该列建立索引。

不幸的是,这仅在您需要从 XML 列中提取一条信息时才有效 - 如果您需要从 XML 中提取整个值列表,则此方法无效

如果您需要提取信息列表,那么您唯一真正的选择就是 XML 索引。但是,根据我们的经验 - 开销(就磁盘空间而言)非常高 - 当我们添加单个 XML 索引时,我们的数据库从大约 2 GB 增加到超过 10 GB ......这是一个选项,并且您可以尝试一下 - 但也要注意潜在的缺点。

【讨论】:

  • 谢谢亲爱的@marc_s。我可以知道每个xml字段值的平均大小是多少吗?
  • 大小范围从 686 到 90'185 字节 - 平均为 6'560 字节,并且表格有超过 450'000 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多