Microsoft SQL Server 2005 的 XML 最佳实施策略

http://tech.ddvip.com   2007年05月17日    社区交流

本文详细介绍Microsoft SQL Server 2005 的 XML 最佳实施策略

  以下是创建上述一个或多个索引的一些准则:

  • 如果工作负荷大量使用 XML 列中的路径表达式,则 PATH 辅助 XML 索引可能会加快工作负荷的处理速度。最常见的例子是在 T-SQL 的 WHERE 子句中对 XML 列使用 exist() 方法。

  • 如果您的工作负荷从单独的使用路径表达式的 XML 实例中检索多个值,则将各个 XML 实例中的路径聚集到 PROPERTY 索引中可能会很有用。这种情况通常出现在属性包场合中,此时对象的属性被获取并且其主键值已知。

  • 如果您的工作负荷涉及到查询 XML 实例中的值,而不知道包含这些值的元素或属性名称,则您可能需要创建 VALUE 索引。这通常发生在子代轴查找中,例如 //author[last-name="Howard"],其中 元素可以出现在层次结构的任意级别上。这种情况还会发生在"通配符"查询中,例如 /book [@* = "novel"],其中查询将查找具有某个值为 "novel" 的属性的 元素。

  示例:基于路径的查找

  假设下面的查询在您的工作负荷中很常见:

SELECT pk, xCol
FROM  T
WHERE xCol.exist ('/book[@genre = "novel"]') = 1

  路径表达式 /book/@genre 和值 "novel" 对应于 PATH 索引的键字段。因此,PATH 类型的辅助 XML 索引对于该工作负荷很有用:

CREATE XML INDEX idx_xCol_Path on T (xCol)
USING XML INDEX idx_xCol FOR PATH
示例:获取对象的属性

  请考虑下面的查询,它从表 T 的各个行中检索一本书的属性"genre"、"title"和 ISBN:

SELECT xCol.value ('(/book/@genre)[1]', 'varchar(50)'),
xCol.value ('(/book/title)[1]', 'varchar(50)'),
xCol.value ('(/book/@ISBN)[1]', 'varchar(50)')
FROM  T

  在这种情况下,属性索引很有用,其创建方式如下所示:

来源:microsoft    作者:Shankar Pal    责编:豆豆技术应用

正在加载评论...