1

处理表值函数查询。这占用了整个查询执行时间的 70%。需要一些帮助来微调它。

INSERT INTO #XMLTAB
SELECT ID,CAST(tab.tabxml as xml).value('(/Root/Element)[1]', 'varchar(100)')
FROM tab 
WHERE TabScore= 36

参考:

  • #XMLTAB是临时表。
  • Tab是数据库中的表名。
  • tabxml列包含 xml 文件
  • tabscore是另一列。

提前致谢。

4

1 回答 1

1

我看到您使用的是 SQL Server XML 数据类型。你知道你可以索引它吗?

试试这个:

CREATE PRIMARY XML INDEX PXML_tab_tabxml
ON tab (tabxml)

CREATE XML INDEX IXML_tab_tabxml
ON tab (tabxml)
USING XML INDEX PXML_tab_tabxml FOR PATH;

第一条语句会将您的 xml 分解为内部结构(索引行)并使 SQL Server 更有效地查询此类反汇编的 XML。这称为 PRIMARY XML INDEX。

但是,如果您使用 value() 方法从某个表中查询 XML,请考虑运行第二条语句,这将进一步加快此类操作。这称为 SECONDARY XML INDEX,可以是三种不同的类型

请注意,在已存在 XML 的大型表上创建此类 XML 索引可能需要一些时间。

于 2013-07-24T08:36:44.900 回答