gpt4 book ai didi

sql - 证明 XML 字段上的主索引不会使检索速度更快

转载 作者:数据小太阳 更新时间:2023-10-29 02:43:41 24 4
gpt4 key购买 nike

我有一个结构如下的学校表:

Id Classification XMLData

Where Id is a uniqueidentifier, Classification is a NVARCHAR and XMLData is XML.

此表有超过 100 万行。 XML 数据各不相同,因为它可能看起来像:

<student><grade></grade><standing></standing><gpa><gpa></student>

另一个例子:

<professor><subject></subject><years></years></professor>

但是,当我尝试使用此查询从表中检索 XML 数据时:

SELECT XMLData FROM School

查询大约需要 1 分钟来获取所有结果。

我尝试使用以下语法在 XML 列上放置主索引:

CREATE PRIMARY XML INDEX IXML_Value ON School (XMLData);

但似乎没有任何时间改进。检索仍然徘徊在 1 分钟左右。这是正常的吗?有没有办法让这个更快?

郑重声明,我的 School 表在主键 (Id) 上确实有一个聚簇索引。

最佳答案

Proving a Primary Index on an XML field does not make retrieval faster

比较没有索引和有索引的查询计划,您会发现它们完全相同,因此与您的查询没有区别。

enter image description here

如果您想查看索引的运行情况,您必须使用其中一个 xml Data Type Methods .

select XMLData.query('.') from dbo.School;

enter image description here

在右下方您可以看到正在使用的 XML 索引。如果仔细观察,您实际上会看到针对表 xml_index_nodes_4... 的聚簇索引查找。该表包含您的 XML 文档具有的所有预先分解的节点和值,查询计划的那部分检索构成您的 XML 的所有零碎部分,UDX 运算符负责将它们再次组合到一个 XML 文档中。我向你保证,在这种情况下你最好不要使用索引。直接检索 XML blob 更快。

Is there a way to get this faster?

不符合您在问题中指定的要求。您应该看看是否可能只检索 XML 的部分以及您的客户端完成其工作所需的行。

关于sql - 证明 XML 字段上的主索引不会使检索速度更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com