我正在尝试为 1 亿行表中的 XML 列确定最有效的选择性 XML 索引。我的问题类似于:
用于选择性 Xml 索引的 Sql Server 2012 扩展事件未显示结果
但是答案中指定的选择性索引的具体好处没有详细讨论。
以下是查询的简化版本:
;WITH CTE AS
( SELECT 1 AS ID,
CONVERT(XML, '<Root>
<ParentTag ParentTagID="Sample Text">
<ChildTag1>5</ChildTag1>
<ChildTag1>6</ChildTag1>
<ChildTag1>7</ChildTag1>
<ChildTag2>8</ChildTag2>
<ChildTag2>9</ChildTag2>
<ChildTag2>10</ChildTag2>
<OtherTag>LargeIrrelevantData</OtherTag>
</ParentTag>
</Root>'
) AS SampleXML
)
SELECT * INTO dbo.CTE FROM CTE
SELECT ID,
Root.ParentTag.value('@ParentTagID','NVARCHAR(MAX)') AS ParentTagID,
RootParentTag1.ChildTag1.value('(text())[1]', 'NVARCHAR(MAX)') AS ChildTag1,
NULL
FROM CTE
OUTER APPLY CTE.SampleXML.nodes('/Root/ParentTag') as Root(ParentTag)
OUTER APPLY Root.ParentTag.nodes('ChildTag1') as RootParentTag1(ChildTag1)
UNION
SELECT ID,
Root.ParentTag.value('@ParentTagID','NVARCHAR(MAX)') AS ParentTagID,
NULL,
RootParentTag2.ChildTag2.value('(text())[1]', 'NVARCHAR(MAX)') AS …
Run Code Online (Sandbox Code Playgroud)