MS SQL SERVER2005 XML 最佳实践13

本文介绍了如何使用SQL Server中的XML索引和XML架构集合来优化XML数据的存储和查询,涵盖了XML索引的类型及其使用方法,以及如何通过XML架构集合管理和枚举XML架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复制代码
DECLARE @isbn varchar(20)SET     @isbn = '0-7356-1588-2'SELECT  xColFROM    TWHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1
 

可以用相似的方式使用 sql:column(),它提供了其他好处。可以使用列的索引来提高效率,这由基于开销的查询优化器决定。另外,计算列可以存储提升的属性。

用于本机 XML 支持的目录视图
目录视图用于提供有关 XML 用法的元数据信息。以下部分中讨论了其中某些视图。

XML 索引
XML 索引项位于目录视图 sys.indexes 中,索引“type”为 3。名称列包含 XML 索引的名称。

另外,XML 索引还记录在目录视图 sys.xml_indexes 中。此视图包含 sys.indexes 的所有列和对 XML 索引有用的某些特定列。secondary_type 列中的值 NULL 表示主 XML 索引;值“P”、“R”和“V”分别表示 PATH、PROPERTY 和 VALUE 辅助 XML 索引。

可以在表值函数 sys.dm_db_index_physical_stats 中找到 XML 索引的空间使用情况。它提供了所有索引类型的相关信息,例如,占用的磁盘页数、平均行大小(字节)和记录数。其中也包括 XML 索引。对于每个数据库分区,都提供此信息。XML 索引使用基表的相同分区方案和分区函数。

检索 XML 架构集合
XML 架构集合在目录视图 sys.xml_schema_collections 中枚举出来。XML 架构集合“sys”由系统定义。它包含无需显式加载即可在所有用户定义的 XML 架构集合中使用的预定义命名空间。此列表包含 xml、xs、xsi、fn 和 xdt 的命名空间。另外两个目录视图是 sys.xml_schema_namespaces(它枚举每个 XML 架构集合中的所有命名空间)和 sys.xml_components(它枚举每个 XML 架构中的所有 XML 架构组件)。

内置函数 XML_SCHEMA_NAMESPACE(schemaName、XmlSchemacollectionName、namespace-uri)生成 xml 数据类型实例。此实例包含在 XML 架构集合中所包含架构(预定义的 XML 架构除外)的 XML 架构片段。

可以按下列方式枚举 XML 架构集合的内容:

编写对 XML 架构集合的相应目录视图的 Transact-SQL 查询。


使用内置函数 XML_SCHEMA_NAMESPACE()。您可以对此函数的输出应用 xml 数据类型方法。但不能修改基础 XML 架构。


这些在下列示例中进行了说明。

示例:枚举 XML 架构集合中的 XML 命名空间
对 XML 架构集合“myCollection”使用下面的查询:

  复制代码
SELECT XSN.nameFROM    sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN    ON (XSC.xml_collection_id = XSN.xml_collection_id)WHERE    XSC.name = 'myCollection'  
 

示例:枚举 XML 架构集合的内容
以下语句枚举关系架构 dbo 中的 XML 架构集合“myCollection”的内容。

  复制代码
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection')
 

通过将目标命名空间指定为 XML_SCHEMA_NAMESPACE() 的第三个参数,可以按 xml 数据类型实例的形式获得集合中的单个 XML 架构。如下面的示例所示。

示例:从 XML 架构集合输出指定的架构
以下语句从关系架构 dbo 中的 XML 架构集合“myCollection”输出目标命名空间为“http://www.microsoft.com/books”的 XML 架构。

  复制代码
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection', N'http://www.microsoft.com/books')
 

查询 XML 架构
可以按下列方式查询加载到 XML 架构集合的 XML 架构:

编写对 XML 架构命名空间的目录视图的 Transact-SQL 查询。


创建包含 xml 数据类型列的表以存储 XML 架构,并将这些架构加载到 XML 类型系统中。可以通过使用 xml 数据类型方法查询 XML 列。另外,还可以对此列生成 XML 索引。但是,使用此方法时,应用程序必须保持 XML 列中存储的 XML 架构和 XML 类型系统之间的一致性。例如,如果从 XML 类型系统中删除 XML 架构命名空间,还必须从表中删除它以保持一致性。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值