设置:
create table dbo.T
(
ID int identity primary key,
XMLDoc xml not null
);
insert into dbo.T(XMLDoc)
select (
select N.Number
for xml path(''), type
)
from (
select top(10000) row_number() over(order by (select null)) as Number
from sys.columns as c1, sys.columns as c2
) as N;
Run Code Online (Sandbox Code Playgroud)
每行的示例 XML:
<Number>314</Number>
Run Code Online (Sandbox Code Playgroud)
查询的任务是计算T指定值为 的行数<Number>。
有两种明显的方法可以做到这一点:
select count(*)
from dbo.T as T
where T.XMLDoc.value('/Number[1]', 'int') = 314;
select count(*)
from dbo.T as T
where T.XMLDoc.exist('/Number[. eq 314]') = …Run Code Online (Sandbox Code Playgroud) performance xml sql-server execution-plan sql-server-2012 query-performance