IT *_*her 1 performance sql-server-2008 xml execution-plan
我有两个查询,如下所示,它们做同样的事情。这xmlcolumn
是一个数据类型为 XML 的列。我使用这些查询在 XML 列中的任何位置搜索字符串。
我检查了这两个查询的执行计划,发现第一个查询的 I/O 成本和子树成本低于第二个。我原以为第一个会在使用cast
和 时具有更高的成本charindex
,但事实并非如此。
为什么它的成本更低?
第一个查询:
SELECT *
FROM mytable
WHERE ( Charindex('abc',CAST([xmlcolumn] AS VARCHAR(MAX)))>0 )
Run Code Online (Sandbox Code Playgroud)
第二个查询:
SELECT *
FROM mytable t1
WHERE t1.[xmlcolumn].exist('//*/text()[contains(.,"abc")]')=1
Run Code Online (Sandbox Code Playgroud)