繁体   English   中英

SQL Server中的选择性XML索引

[英]Selective XML indexing in SQL Server

我有一个具有数千行的表,该表在名为OldValue的列中具有以下数据:

<attendance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CalendarId>100</CalendarId>
  <PeriodId>1019</PeriodId>
  <PersonId>10457</PersonId>
  <Date>2012-01-04 00:00:00</Date>
  <ExcuseId>884</ExcuseId>
</attendance>

我正在尝试设置选择性xml索引。 到目前为止,这是我所做的:

创建选择性XML索引:

CREATE SELECTIVE XML INDEX sxi_Test ON [dbo].[mytable](OldValue)
WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as yming)
FOR
(    
pathWH2 = '/yming:Attendance/PersonId' AS XQUERY 'xs:string' SINGLETON
);
GO

查询索引总是返回0行:

WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as yming)
SELECT COUNT(*)
FROM mytable
WHERE OldValue.exist(N'(/yming:Attendance/yming:PersonId[.=10457])') = 1
GO

有什么建议么? 谢谢。

我通常会遇到一个涉及SQL中XML命名空间的解决方案,但这似乎对我有用:

DECLARE @x XML = '<attendance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <CalendarId>100</CalendarId> <PeriodId>1019</PeriodId> <PersonId>10457</PersonId> <Date>2012-01-04 00:00:00</Date> <ExcuseId>884</ExcuseId> </attendance>';

WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as yming)
SELECT @x.exist(N'(/attendance/PersonId[.=10457])')
GO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM