WEB开发网
开发学院数据库MSSQL Server Microsoft SQL Server 2005 中的 XML 支持(2) 阅读

Microsoft SQL Server 2005 中的 XML 支持(2)

 2007-05-13 09:26:32 来源:WEB开发网   
核心提示: 例:从 XML 实例提取属性假定要提取名字不是“David”的作者的名和姓,将其作为由两列(FirstName 和 LastName)组成的一个行集,Microsoft SQL Server 2005 中的 XML 支持(2)(4),通过使用 nodes() 和 v

例:从 XML 实例提取属性

假定要提取名字不是“David”的作者的名和姓,将其作为由两列(FirstName 和 LastName)组成的一个行集。通过使用 nodes() 和 value() 方法,您可以达到此目的,如下所示:

SELECT nref.value('first-name[1]', 'nvarchar(50)') FirstName,
    nref.value('last-name[1]', 'nvarchar(50)') LastName
FROM  docs CROSS APPLY xCol.nodes('//author') AS R(nref)
WHERE nref.exist('.[first-name != "David"]') = 1

在这个示例中,nodes('//author') 产生一个指向每个 XML 实例的 元素的引用的行集。作者的名和姓是通过对与这些引用有关的 value() 方法求值来获得的。要获得好的性能,需要建立 XML 列的索引,这是下一部分的主题。

建立 XML 数据的索引

XML 数据是以内部二进制形式存储的,存储容量可以达到 2 GB。每个查询在运行时一次或多次地解析表中每一行的 XML BLOB。这会使查询处理的速度变得很慢。如果在工作负荷中常常需要进行查询,则建立 XML 列的索引是有好处的,不过,这样做必须考虑在修改数据的过程中维护 XML 索引的成本。

XML 索引是通过一个新的 DDL 语句在类型化和非类型化的 XML 列中创建的。这为该列中的所有 XML 实例创建了一个 B+ 树。XML 列中的第一个索引是“主 XML 索引”。通过这个索引,可以在 XML 列中支持三种类型的次 XML 索引来加速普通类的查询,如下一节所述。

主 XML 索引

在基表(即定义 XML 列的表)的主键中,主 XML 索引需要聚集索引。它在 XML 节点的信息集项的一个子集中创建一个 B+ 树。B+ 树的列表示标记,例如元素和属性名称、节点值和节点类型。其他的列捕获 XML 数据中的文档顺序和结构,以及从 XML 实例的根节点到每个节点的路径,从而有效地对路径表达式进行求值。基表的主键在主 XML 索引中复制,以使索引行与基表行相关。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Microsoft SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接