[英]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.